[jira] [Commented] (CAY-2598) Oracle dbImport bug
[ https://issues.apache.org/jira/browse/CAY-2598?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16915863#comment-16915863 ] Arseni Bulatski commented on CAY-2598: -- DbImport plugin execution is not responding for oracle because it try to load all schemas including system schemas what take a lot of time. It can be fixed if we will filter system schemas before trying to load tables. > Oracle dbImport bug > --- > > Key: CAY-2598 > URL: https://issues.apache.org/jira/browse/CAY-2598 > Project: Cayenne > Issue Type: Bug > Components: dbimport, Modeler >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M1 > > > There are several problems in dbImport from Oracle database. > 1. Running dbImport from maven plugin is not responding. Connect is > established and then plugin logs nothing. > 2. -Modeler dbImport also has some problems.- > * -Case when you haven't got catalogs in database but have schemas: modeler > try to load all catalogs and shows that there are nothing to import but > tables in schemas exist. So the problem is that modeler try to load only > catalogs and that's all.- > * -After some changes in code schemas were loaded but when try to load all > tables from all schemas bug with the similar behavior to point 1 appeared.- > DbImport was passed after code modifications to set schema to import. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2598) Oracle dbImport bug
[ https://issues.apache.org/jira/browse/CAY-2598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski updated CAY-2598: - Description: There are several problems in dbImport from Oracle database. 1. Running dbImport from maven plugin is not responding. Connect is established and then plugin logs nothing. 2. -Modeler dbImport also has some problems.- * -Case when you haven't got catalogs in database but have schemas: modeler try to load all catalogs and shows that there are nothing to import but tables in schemas exist. So the problem is that modeler try to load only catalogs and that's all.- * -After some changes in code schemas were loaded but when try to load all tables from all schemas bug with the similar behavior to point 1 appeared.- DbImport was passed after code modifications to set schema to import. was: There are several problems in dbImport from Oracle database. 1. Running dbImport from maven plugin is not responding. Connect is established and then plugin logs nothing. 2. Modeler dbImport also has some problems. * Case when you haven't got catalogs in database but have schemas: modeler try to load all catalogs and shows that there are nothing to import but tables in schemas exist. So the problem is that modeler try to load only catalogs and that's all. * After some changes in code schemas were loaded but when try to load all tables from all schemas bug with the similar behavior to point 1 appeared. DbImport was passed after code modifications to set schema to import. > Oracle dbImport bug > --- > > Key: CAY-2598 > URL: https://issues.apache.org/jira/browse/CAY-2598 > Project: Cayenne > Issue Type: Bug > Components: dbimport, Modeler >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M1 > > > There are several problems in dbImport from Oracle database. > 1. Running dbImport from maven plugin is not responding. Connect is > established and then plugin logs nothing. > 2. -Modeler dbImport also has some problems.- > * -Case when you haven't got catalogs in database but have schemas: modeler > try to load all catalogs and shows that there are nothing to import but > tables in schemas exist. So the problem is that modeler try to load only > catalogs and that's all.- > * -After some changes in code schemas were loaded but when try to load all > tables from all schemas bug with the similar behavior to point 1 appeared.- > DbImport was passed after code modifications to set schema to import. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Closed] (CAY-2609) Modeler: can't close dbImport result dialog window
[ https://issues.apache.org/jira/browse/CAY-2609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski closed CAY-2609. Resolution: Fixed > Modeler: can't close dbImport result dialog window > -- > > Key: CAY-2609 > URL: https://issues.apache.org/jira/browse/CAY-2609 > Project: Cayenne > Issue Type: Bug > Components: Modeler >Affects Versions: 4.1.B2 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > When user click to start reverse engineering and there are a lot of data to > import, dialog window with progress bar appears. > If user click to the cancel button, dbImport result dialog are shown but then > it can't be closed. > It appears when user click cancel at the beginning of process. > To reproduce: > * Open dbImport tab > * Click run import > * Click cancel in progress dialog window -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Closed] (CAY-2608) CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
[ https://issues.apache.org/jira/browse/CAY-2608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski closed CAY-2608. Resolution: Fixed > CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource > > > Key: CAY-2608 > URL: https://issues.apache.org/jira/browse/CAY-2608 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B3, 4.2.M1 > Environment: CayenneModeler 4.1.B3-SNAPSHOT, my own Mac assembly >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > 0. In the modeler preferences create a DataSource with "Automatic" adapter > 1. Start a new project > 2. Create a new DataMap > 3. Switch to "DbImport" tab, click "Run Import" > 4. When prompted, select the DataSource above and click "Continue" > Result: error dialog with the exception below. > {noformat} > CayenneModeler Info > Version: 4.1.B3-SNAPSHOT > Build Date: Aug 20 2019 11:02:28 > Exception: > = > java.lang.NullPointerException > at > java.prefs/java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:249) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.saveConnectionInfo(ReverseEngineeringAction.java:160) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.startImport(ReverseEngineeringAction.java:91) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.performAction(ReverseEngineeringAction.java:137) > at > org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171) > at > java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) > at > java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) > at > java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at > java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at > java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) > at > java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) > at > java.desktop/java.awt.Component.processMouseEvent(Component.java:6632) > at > java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) > at java.desktop/java.awt.Component.processEvent(Component.java:6397) > at java.desktop/java.awt.Container.processEvent(Container.java:2263) > at > java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) > at > java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) > at > java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at >
[jira] [Closed] (CAY-2600) Modeler DbImport: Can't retrieve schema for databases with no catalog support
[ https://issues.apache.org/jira/browse/CAY-2600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski closed CAY-2600. Resolution: Fixed > Modeler DbImport: Can't retrieve schema for databases with no catalog support > - > > Key: CAY-2600 > URL: https://issues.apache.org/jira/browse/CAY-2600 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B2 >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.1.B3, 4.2.M1 > > > I am trying to db-import model for Hana DB. DB Import itself ("Run Import" > button) works, if I manually add all the settings. However "Refresh DB > Schema" button results in an empty schema. > The cause of it seems to be the implementation of DatabaseSchemaLoader.load > method. It looks for catalogs, and if none found, returns an empty result. > Hana does not support catalogs, but supports schemas. And we need to support > this case. > I guess in general we need to support all combinations of schema and catalog > presence across different databases: > 1. Schema and Catalog (?) > 2. Catalog only (MySQL) > 3. Schema only (Hana ... who else?) > 4. No schema or catalog (any DBs like this?) -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2608) CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
[ https://issues.apache.org/jira/browse/CAY-2608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski updated CAY-2608: - Affects Version/s: 4.2.M1 > CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource > > > Key: CAY-2608 > URL: https://issues.apache.org/jira/browse/CAY-2608 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B3, 4.2.M1 > Environment: CayenneModeler 4.1.B3-SNAPSHOT, my own Mac assembly >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > 0. In the modeler preferences create a DataSource with "Automatic" adapter > 1. Start a new project > 2. Create a new DataMap > 3. Switch to "DbImport" tab, click "Run Import" > 4. When prompted, select the DataSource above and click "Continue" > Result: error dialog with the exception below. > {noformat} > CayenneModeler Info > Version: 4.1.B3-SNAPSHOT > Build Date: Aug 20 2019 11:02:28 > Exception: > = > java.lang.NullPointerException > at > java.prefs/java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:249) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.saveConnectionInfo(ReverseEngineeringAction.java:160) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.startImport(ReverseEngineeringAction.java:91) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.performAction(ReverseEngineeringAction.java:137) > at > org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171) > at > java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) > at > java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) > at > java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at > java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at > java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) > at > java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) > at > java.desktop/java.awt.Component.processMouseEvent(Component.java:6632) > at > java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) > at java.desktop/java.awt.Component.processEvent(Component.java:6397) > at java.desktop/java.awt.Container.processEvent(Container.java:2263) > at > java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) > at > java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) > at > java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at >
[jira] [Updated] (CAY-2608) CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
[ https://issues.apache.org/jira/browse/CAY-2608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski updated CAY-2608: - Fix Version/s: 4.2.M1 > CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource > > > Key: CAY-2608 > URL: https://issues.apache.org/jira/browse/CAY-2608 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B3 > Environment: CayenneModeler 4.1.B3-SNAPSHOT, my own Mac assembly >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > 0. In the modeler preferences create a DataSource with "Automatic" adapter > 1. Start a new project > 2. Create a new DataMap > 3. Switch to "DbImport" tab, click "Run Import" > 4. When prompted, select the DataSource above and click "Continue" > Result: error dialog with the exception below. > {noformat} > CayenneModeler Info > Version: 4.1.B3-SNAPSHOT > Build Date: Aug 20 2019 11:02:28 > Exception: > = > java.lang.NullPointerException > at > java.prefs/java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:249) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.saveConnectionInfo(ReverseEngineeringAction.java:160) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.startImport(ReverseEngineeringAction.java:91) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.performAction(ReverseEngineeringAction.java:137) > at > org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171) > at > java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) > at > java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) > at > java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at > java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at > java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) > at > java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) > at > java.desktop/java.awt.Component.processMouseEvent(Component.java:6632) > at > java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) > at java.desktop/java.awt.Component.processEvent(Component.java:6397) > at java.desktop/java.awt.Container.processEvent(Container.java:2263) > at > java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) > at > java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) > at > java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at >
[jira] [Commented] (CAY-2609) Modeler: can't close dbImport result dialog window
[ https://issues.apache.org/jira/browse/CAY-2609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16915790#comment-16915790 ] Arseni Bulatski commented on CAY-2609: -- *4.1* [https://github.com/apache/cayenne/commit/8cb272f2fca9964bd817b5b7ba6ad7e92322ac74] *4.2* https://github.com/apache/cayenne/commit/fdc03b94e66877c18fc04e71ec9235b533aa8c3c > Modeler: can't close dbImport result dialog window > -- > > Key: CAY-2609 > URL: https://issues.apache.org/jira/browse/CAY-2609 > Project: Cayenne > Issue Type: Bug > Components: Modeler >Affects Versions: 4.1.B2 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > When user click to start reverse engineering and there are a lot of data to > import, dialog window with progress bar appears. > If user click to the cancel button, dbImport result dialog are shown but then > it can't be closed. > It appears when user click cancel at the beginning of process. > To reproduce: > * Open dbImport tab > * Click run import > * Click cancel in progress dialog window -- This message was sent by Atlassian Jira (v8.3.2#803003)
[cayenne] branch master updated: CAY-2609 Modeler: can't close dbImport result dialog window
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/master by this push: new fdc03b9 CAY-2609 Modeler: can't close dbImport result dialog window fdc03b9 is described below commit fdc03b94e66877c18fc04e71ec9235b533aa8c3c Author: Arseni Bulatski AuthorDate: Mon Aug 26 16:14:53 2019 +0300 CAY-2609 Modeler: can't close dbImport result dialog window --- RELEASE-NOTES.txt | 1 + .../modeler/action/ReverseEngineeringAction.java | 2 +- .../cayenne/modeler/util/LongRunningTask.java | 36 +- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 6908e04..1a2a9b9 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -81,6 +81,7 @@ CAY-2601 Modeler DbImport: result dialog issues CAY-2603 NPE reloading project in the model CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource +CAY-2609 Modeler: can't close dbImport result dialog window -- Release: 4.1.B1 diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java index 3798f2c..28d28ec 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java @@ -123,7 +123,7 @@ public class ReverseEngineeringAction extends DBWizardAction * - * + * */ public abstract class LongRunningTask { @@ -95,21 +93,11 @@ public abstract class LongRunningTask { setCanceled(false); this.finished = false; -Thread task = new Thread(new Runnable() { - -public void run() { -internalExecute(); -} -}); +Thread task = new Thread(this::internalExecute); Timer progressDisplayTimer = new Timer( DEFAULT_MS_TO_DECIDE_TO_POPUP, -new ActionListener() { - -public void actionPerformed(ActionEvent e) { -showProgress(); -} -}); +e -> showProgress()); progressDisplayTimer.setRepeats(false); @@ -134,23 +122,13 @@ public abstract class LongRunningTask { LOGGER.debug("task still in progress, will show progress dialog..."); this.dialog = new ProgressDialog(frame, "Progress...", title); -this.dialog.getCancelButton().addActionListener(new ActionListener() { - -public void actionPerformed(ActionEvent e) { -setCanceled(true); -} -}); +this.dialog.getCancelButton().addActionListener(e -> setCanceled(true)); dialog.getProgressBar().setMinimum(getMinValue()); dialog.getProgressBar().setMaximum(getMaxValue()); updateProgress(); -this.taskPollingTimer = new Timer(500, new ActionListener() { - -public void actionPerformed(ActionEvent e) { -updateProgress(); -} -}); +this.taskPollingTimer = new Timer(500, e -> updateProgress()); this.taskPollingTimer.start(); this.dialog.setVisible(true);
[cayenne] branch STABLE-4.1 updated: CAY-2609 Modeler: can't close dbImport result dialog window
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch STABLE-4.1 in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/STABLE-4.1 by this push: new 8cb272f CAY-2609 Modeler: can't close dbImport result dialog window 8cb272f is described below commit 8cb272f2fca9964bd817b5b7ba6ad7e92322ac74 Author: Arseni Bulatski AuthorDate: Mon Aug 26 16:14:53 2019 +0300 CAY-2609 Modeler: can't close dbImport result dialog window --- RELEASE-NOTES.txt | 1 + .../modeler/action/ReverseEngineeringAction.java | 2 +- .../cayenne/modeler/util/LongRunningTask.java | 36 +- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 8947fe4..6fa824c 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -36,6 +36,7 @@ CAY-2603 NPE reloading project in the model CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException CAY-2606 Can't resolve obj path with embeddable component CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource +CAY-2609 Modeler: can't close dbImport result dialog window -- Release: 4.1.B2 diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java index 51f0869..b5cba06 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java @@ -123,7 +123,7 @@ public class ReverseEngineeringAction extends DBWizardAction * - * + * */ public abstract class LongRunningTask { @@ -95,21 +93,11 @@ public abstract class LongRunningTask { setCanceled(false); this.finished = false; -Thread task = new Thread(new Runnable() { - -public void run() { -internalExecute(); -} -}); +Thread task = new Thread(this::internalExecute); Timer progressDisplayTimer = new Timer( DEFAULT_MS_TO_DECIDE_TO_POPUP, -new ActionListener() { - -public void actionPerformed(ActionEvent e) { -showProgress(); -} -}); +e -> showProgress()); progressDisplayTimer.setRepeats(false); @@ -134,23 +122,13 @@ public abstract class LongRunningTask { LOGGER.debug("task still in progress, will show progress dialog..."); this.dialog = new ProgressDialog(frame, "Progress...", title); -this.dialog.getCancelButton().addActionListener(new ActionListener() { - -public void actionPerformed(ActionEvent e) { -setCanceled(true); -} -}); +this.dialog.getCancelButton().addActionListener(e -> setCanceled(true)); dialog.getProgressBar().setMinimum(getMinValue()); dialog.getProgressBar().setMaximum(getMaxValue()); updateProgress(); -this.taskPollingTimer = new Timer(500, new ActionListener() { - -public void actionPerformed(ActionEvent e) { -updateProgress(); -} -}); +this.taskPollingTimer = new Timer(500, e -> updateProgress()); this.taskPollingTimer.start(); this.dialog.setVisible(true);
[jira] [Assigned] (CAY-2609) Modeler: can't close dbImport result dialog window
[ https://issues.apache.org/jira/browse/CAY-2609?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev reassigned CAY-2609: Assignee: Arseni Bulatski > Modeler: can't close dbImport result dialog window > -- > > Key: CAY-2609 > URL: https://issues.apache.org/jira/browse/CAY-2609 > Project: Cayenne > Issue Type: Bug > Components: Modeler >Affects Versions: 4.1.B2 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3, 4.2.M1 > > > When user click to start reverse engineering and there are a lot of data to > import, dialog window with progress bar appears. > If user click to the cancel button, dbImport result dialog are shown but then > it can't be closed. > It appears when user click cancel at the beginning of process. > To reproduce: > * Open dbImport tab > * Click run import > * Click cancel in progress dialog window -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Assigned] (CAY-2598) Oracle dbImport bug
[ https://issues.apache.org/jira/browse/CAY-2598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev reassigned CAY-2598: Assignee: Arseni Bulatski > Oracle dbImport bug > --- > > Key: CAY-2598 > URL: https://issues.apache.org/jira/browse/CAY-2598 > Project: Cayenne > Issue Type: Bug > Components: dbimport, Modeler >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M1 > > > There are several problems in dbImport from Oracle database. > 1. Running dbImport from maven plugin is not responding. Connect is > established and then plugin logs nothing. > 2. Modeler dbImport also has some problems. > * Case when you haven't got catalogs in database but have schemas: modeler > try to load all catalogs and shows that there are nothing to import but > tables in schemas exist. So the problem is that modeler try to load only > catalogs and that's all. > * After some changes in code schemas were loaded but when try to load all > tables from all schemas bug with the similar behavior to point 1 appeared. > DbImport was passed after code modifications to set schema to import. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2536) No Catalog/Schema selection in Generate Database Schema
[ https://issues.apache.org/jira/browse/CAY-2536?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2536: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > No Catalog/Schema selection in Generate Database Schema > --- > > Key: CAY-2536 > URL: https://issues.apache.org/jira/browse/CAY-2536 > Project: Cayenne > Issue Type: Bug > Components: Modeler >Affects Versions: 4.1.B1 >Reporter: ana benko >Assignee: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M2 > > > There's no catalog/schema selection in Generate Database Schema after > selecting db connection without catalog/schema in url > -> no db is generated > -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Assigned] (CAY-2600) Modeler DbImport: Can't retrieve schema for databases with no catalog support
[ https://issues.apache.org/jira/browse/CAY-2600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev reassigned CAY-2600: Assignee: Arseni Bulatski > Modeler DbImport: Can't retrieve schema for databases with no catalog support > - > > Key: CAY-2600 > URL: https://issues.apache.org/jira/browse/CAY-2600 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B2 >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.1.B3, 4.2.M1 > > > I am trying to db-import model for Hana DB. DB Import itself ("Run Import" > button) works, if I manually add all the settings. However "Refresh DB > Schema" button results in an empty schema. > The cause of it seems to be the implementation of DatabaseSchemaLoader.load > method. It looks for catalogs, and if none found, returns an empty result. > Hana does not support catalogs, but supports schemas. And we need to support > this case. > I guess in general we need to support all combinations of schema and catalog > presence across different databases: > 1. Schema and Catalog (?) > 2. Catalog only (MySQL) > 3. Schema only (Hana ... who else?) > 4. No schema or catalog (any DBs like this?) -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2556) Unused MergerToken is generated
[ https://issues.apache.org/jira/browse/CAY-2556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2556: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Unused MergerToken is generated > --- > > Key: CAY-2556 > URL: https://issues.apache.org/jira/browse/CAY-2556 > Project: Cayenne > Issue Type: Bug > Components: dbimport >Affects Versions: 4.1.B2, 4.2.M1 >Reporter: Arseni Bulatski >Priority: Minor > Fix For: 4.2.M2 > > > # Drop not null column from db > # Run dbImport > # This log appears: > {code:java} > [INFO] Drop Column team_daily_standings.LOSSES_LAST_10_GAMES > [INFO] Drop Column team_daily_standings.WINS_LAST_10_GAMES > [INFO] Drop Column team_daily_standings.TIES_LAST_10_GAMES > [INFO] Drop Column team_daily_standings.OT_LOSSES_LAST_10_GAMES > ... > [INFO] Set Allow Null team_daily_standings.LOSSES_LAST_10_GAMES > [INFO] Set Allow Null team_daily_standings.WINS_LAST_10_GAMES > [INFO] Set Allow Null team_daily_standings.TIES_LAST_10_GAMES > [INFO] Set Allow Null team_daily_standings.OT_LOSSES_LAST_10_GAMES > {code} > Token to allow null was created but will never used because this column was > dropped before. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2333) Project XML extensions
[ https://issues.apache.org/jira/browse/CAY-2333?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2333: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Project XML extensions > -- > > Key: CAY-2333 > URL: https://issues.apache.org/jira/browse/CAY-2333 > Project: Cayenne > Issue Type: Improvement > Components: Modeler, Non-GUI Tools >Affects Versions: 4.1.M1 >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > Cayenne need flexible project XML extensions mechanism to allow attach some > meta information to project, that will not affect runtime. > Use cases can be following: > * General comments for entities, attributes and relationships > * Reverse engineering config > * Cgen config > * ER and Class diagram > Possible linked tasks CAY-400 and CAY-56 > Here is main API for project extensions: > {code} > public interface ProjectExtension { > /** > * @return delegate that handle loading phase of XML processing > */ > LoaderDelegate createLoaderDelegate(); > /** > * @return delegate that handle saving phase of XML processing > */ > SaverDelegate createSaverDelegate(); > } > public interface LoaderDelegate { > /** > * @return target namespace that this extension is using > */ > String getTargetNamespace(); > /** > * Create handler that will handle parsing process further. > */ > NamespaceAwareNestedTagHandler > createHandler(NamespaceAwareNestedTagHandler parent, String tag); > } > public interface SaverDelegate extends ConfigurationNodeVisitor { > /** > * @param encoder provided by caller > */ > void setXMLEncoder(XMLEncoder encoder); > void setParentDelegate(SaverDelegate parentDelegate); > SaverDelegate getParentDelegate(); > } > {code} > Extension can be contributed via > {{ProjectModule.contributeExtensions(Binder)}} method. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2515) In-memory evaluation of user-defined SQL functions
[ https://issues.apache.org/jira/browse/CAY-2515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2515: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > In-memory evaluation of user-defined SQL functions > -- > > Key: CAY-2515 > URL: https://issues.apache.org/jira/browse/CAY-2515 > Project: Cayenne > Issue Type: Task > Components: Core Library >Reporter: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M2 > > > Cayenne allows to evaluate expressions in memory, however custom functions > allowed per CAY-2512 (as well as aggregate functions, but that's should be > dealt separately) just throw exceptions in that case. > Seems like not a high priority task, but there can be some cases when this > feature can be useful. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2516) Support for custom syntax for SQL function call
[ https://issues.apache.org/jira/browse/CAY-2516?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2516: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Support for custom syntax for SQL function call > --- > > Key: CAY-2516 > URL: https://issues.apache.org/jira/browse/CAY-2516 > Project: Cayenne > Issue Type: Task >Reporter: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M2 > > > This task is about an unimplemented case of CAY-2512 for calling SQL > functions with custom syntax, like {code} > OVERLAY ( 'foo bar' PLACING 'baz' FROM 5 ) > {code} -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2314) Problem in UnmanagedPoolingDataSource with managing closed Derby connection
[ https://issues.apache.org/jira/browse/CAY-2314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2314: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Problem in UnmanagedPoolingDataSource with managing closed Derby connection > --- > > Key: CAY-2314 > URL: https://issues.apache.org/jira/browse/CAY-2314 > Project: Cayenne > Issue Type: Bug >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M2 > > > There is random and rare test failures with a stack trace like this: > {quote} > org.apache.cayenne.CayenneRuntimeException: [v.4.0.M6-SNAPSHOT May 19 2017 > 14:34:29] Global exception. > at org.apache.derby.iapi.error.StandardException.newException(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown > Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedConnection.getAutoCommit(Unknown > Source) > at > org.apache.cayenne.datasource.PoolAwareConnection.getAutoCommit(PoolAwareConnection.java:155) > at > org.apache.cayenne.datasource.UnmanagedPoolingDataSource.resetState(UnmanagedPoolingDataSource.java:309) > at > org.apache.cayenne.datasource.UnmanagedPoolingDataSource.getConnection(UnmanagedPoolingDataSource.java:334) > {quote} -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2528) Subquery as query root
[ https://issues.apache.org/jira/browse/CAY-2528?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2528: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Subquery as query root > -- > > Key: CAY-2528 > URL: https://issues.apache.org/jira/browse/CAY-2528 > Project: Cayenne > Issue Type: Task > Components: Core Library >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M2 > > > After implementing CAY-2526 this will be really useful. > API example: > {code} > Select subselect = ObjectSelect.query(..) > ObjectSelect.query(Artist.class) > .join(subselect, "s", exp) > .select(context); > {code} -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2560) Vertical Inheritance: optimistic lock on children is not implemented
[ https://issues.apache.org/jira/browse/CAY-2560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2560: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Vertical Inheritance: optimistic lock on children is not implemented > > > Key: CAY-2560 > URL: https://issues.apache.org/jira/browse/CAY-2560 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Affects Versions: 4.0.1, 4.1.B1 >Reporter: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > Currently we can only use optimistic lock only on attributes of root entity > of vertical inheritance hierarchy. Marking as "use for optimistic lock" sub > entities' attributes does nothing. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2597) Case when implementation for Cayenne
[ https://issues.apache.org/jira/browse/CAY-2597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2597: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Case when implementation for Cayenne > > > Key: CAY-2597 > URL: https://issues.apache.org/jira/browse/CAY-2597 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Affects Versions: 4.1.B2 >Reporter: hilman >Priority: Major > Labels: features > Fix For: 4.2.M2 > > > this ORM is great i love it, but is there any expression for "case when" in > Cayenne? i am using version 4.1.B1 -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2529) Custom expression in DbJoin
[ https://issues.apache.org/jira/browse/CAY-2529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2529: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Custom expression in DbJoin > --- > > Key: CAY-2529 > URL: https://issues.apache.org/jira/browse/CAY-2529 > Project: Cayenne > Issue Type: Task > Components: Core Library, Modeler >Reporter: Nikita Timofeev >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > Time Spent: 10m > Remaining Estimate: 0h > > Cayenne uses expression like {{src.id = dst.fk}} as a join clause and this is > hardcoded for now. > We can extend this to accept any {{Expression}}. > This will require redesign in Modeler DbJoin creation dialog and some changes > in SelectTranslator. Also this may touch some logic that depends on > {{DbRelationship.isSourceIndependentFromTargetChange()}} method. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2548) Need to use fully qualified table name in Auto PK generator
[ https://issues.apache.org/jira/browse/CAY-2548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2548: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Need to use fully qualified table name in Auto PK generator > --- > > Key: CAY-2548 > URL: https://issues.apache.org/jira/browse/CAY-2548 > Project: Cayenne > Issue Type: Task > Components: Core Library >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Need to use fully qualified table name in Auto PK generator. > Need to use catalog and schema names when create, update or delete > AUTO_PK_SUPPORT table. > Note: > Look JdbcPkGenerator class. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2554) Redesign dbRelationship's and join's structure
[ https://issues.apache.org/jira/browse/CAY-2554?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2554: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Redesign dbRelationship's and join's structure > -- > > Key: CAY-2554 > URL: https://issues.apache.org/jira/browse/CAY-2554 > Project: Cayenne > Issue Type: Task > Components: Core Library >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Need to redesign DbRelationship and DbJoin in order to represent relation > between entities. > DbJoin will hold relationship's condition(usual join with pairs of attributes > or expression join) and two dbRelationships, one at a time for each entities. > This change will better represent relation from database view and will help > to implement some new features. > Structure: > DbJoin > * DbJoinCondition > * DbRelationship[] > Condition for pairs of attributes: > ColumnPairsCondition > * List > or ExpressionCondition(in future) > * Expression > > -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2552) ColumnQuery with flattened attributes bug
[ https://issues.apache.org/jira/browse/CAY-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2552: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > ColumnQuery with flattened attributes bug > - > > Key: CAY-2552 > URL: https://issues.apache.org/jira/browse/CAY-2552 > Project: Cayenne > Issue Type: Bug > Components: Core Library >Affects Versions: 4.2.M1 >Reporter: Arseni Bulatski >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > Attachments: ColumnQuery_with_flattened_attribute_bug.patch > > > Select entity with flattened attributes in column query. > Entry point: EntityRowReader > Fields size from segmentMetadata isn't equal to columns list size in > RowDescriptor. > You can see test case in attachment. > > This bugs appeared when worked on CAY-2529 Custom expression in DbJoin. Order > of attributes was changed and bug with wrong size broke tests. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2526) Dynamic join at query time in ObjectSelect
[ https://issues.apache.org/jira/browse/CAY-2526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2526: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Dynamic join at query time in ObjectSelect > -- > > Key: CAY-2526 > URL: https://issues.apache.org/jira/browse/CAY-2526 > Project: Cayenne > Issue Type: Task > Components: Core Library, Database integration >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > For complex queries there is a need to join tables that are not directly > linked with root via relationship. > Currently this can be done only in raw SQL queries (like {{SQLTemplate}}). > We can introduce support for that in {{ObjectSelect}}. > API can look something like this (we probably need some improvements in > {{Property}} API as well): > {code:java} > StringProperty paintingTitle = > PropertyFactory.createString("p.paintingTitle", String.class); > ObjectSelect > .columnQuery(Artist.class, Artist.ARTIST_NAME, paintingTitle) > .join(Painting.class, "p", > Artist.ARTIST_NAME.length().eq(paintingTitle.length())) > .select(context); > {code} -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2513) Memory leak because of many instances of InvocationDispatch
[ https://issues.apache.org/jira/browse/CAY-2513?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2513: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Memory leak because of many instances of InvocationDispatch > --- > > Key: CAY-2513 > URL: https://issues.apache.org/jira/browse/CAY-2513 > Project: Cayenne > Issue Type: Bug > Components: Core Library >Affects Versions: 4.1.B1, 4.2.M1 >Reporter: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Using shared cache and creating many contexts causes this problem. > Each change sends snapshot event to all contexts what causes growth of > InvocationDispatch because all contexts are listeners to other contexts. > The workaround is https://issues.apache.org/jira/browse/CAY-2514 -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2524) New EventManager implementation
[ https://issues.apache.org/jira/browse/CAY-2524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2524: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > New EventManager implementation > --- > > Key: CAY-2524 > URL: https://issues.apache.org/jira/browse/CAY-2524 > Project: Cayenne > Issue Type: Task > Components: Core Library >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2488) Problem with not to PK relationships
[ https://issues.apache.org/jira/browse/CAY-2488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2488: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Problem with not to PK relationships > > > Key: CAY-2488 > URL: https://issues.apache.org/jira/browse/CAY-2488 > Project: Cayenne > Issue Type: Bug > Components: Core Library >Reporter: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Problem with not to PK relationships was found. > * create relationship with join not to PK (target or source attribute isn't > PK) in modeler > * create entities > * create relationship between entities > * commit changes > In database objects will be created, but relationship won't be created. So > you can't be able to get joined objects. > This happens because in you can't create arcDiff. > Look DataDomainDBDiffBuilder arcCreated method and appendForeignKeys method. > In current logic you can get only PK attribute value from ObjectId. > First step is to add validation of this case to prevent creation of this > relationship. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2483) Method to return Object[] with entity after SQLTemplate or SQLSelect perform
[ https://issues.apache.org/jira/browse/CAY-2483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2483: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Method to return Object[] with entity after SQLTemplate or SQLSelect perform > > > Key: CAY-2483 > URL: https://issues.apache.org/jira/browse/CAY-2483 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Reporter: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Add methods to return Object[] with entity after SQLTemplate or SQLSelect > perform. > Example : > List result = SQLSelect.scalarQuery("SELECT #result(p, 'Painting'), > ARTIST.NAME FROM PAINTING AS p INNER JOIN ARTIST ON p.ARTIST_ID=ARTIST.ID", > Paintng.class, String.class) > .select(context); > > -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2498) Rename packages to prevent crossing package names
[ https://issues.apache.org/jira/browse/CAY-2498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2498: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Rename packages to prevent crossing package names > - > > Key: CAY-2498 > URL: https://issues.apache.org/jira/browse/CAY-2498 > Project: Cayenne > Issue Type: Task > Components: Core Library, ROP >Reporter: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > Need to rename packages to prevent crossing package names when using java > modularity. > Conflicts were found between: > 1) cayenne-project-compatibility and cayenne-server > 2) cayenne-rop-server and cayenne-server > 3) cayenne-client and cayenne-client-jetty > 4) cayenne-server and cayenne-dbcp2 > 5) cayenne-server and jgroups, jms, xmpp > 6) cayenne-protostuff and cayenne-server -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2477) Modeler: transfer modeler core on Bootique platform
[ https://issues.apache.org/jira/browse/CAY-2477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2477: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Modeler: transfer modeler core on Bootique platform > --- > > Key: CAY-2477 > URL: https://issues.apache.org/jira/browse/CAY-2477 > Project: Cayenne > Issue Type: Improvement > Components: Modeler >Reporter: Nikita Timofeev >Assignee: Arseni Bulatski >Priority: Major > Fix For: 4.2.M2 > > > We have some internal experimental version for that and it is really > promising. Cayenne internal DI is great for Cayenne runtime, as it is fast > and have small footprint. However for big app such as Modeler Bootique > framework is much more flexible and extensible. > This task completion will allow us: > # Split Modeler using bootique built-in modular architecture. This allows > better maintainability. Additionally we can introduce at some point plugin > architecture. > # Create base for experiments with JavaFX UI. This includes extracting some > UI-independent core and UI layer. This UI layer can be potentially replaced > with fully-functional JavaFX version without affecting core. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2399) Convert string values to Enum in qualifiers
[ https://issues.apache.org/jira/browse/CAY-2399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2399: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Convert string values to Enum in qualifiers > --- > > Key: CAY-2399 > URL: https://issues.apache.org/jira/browse/CAY-2399 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Reporter: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > See also CAY-2397 > For now you can only use Enum values as this: {{attribute = > enum:org.example.Enum.value}} > This task is about allowing automatic conversion of String values to Enum in > expression like {{attribute = 'value'}}, where {{attribute}} is of {{Enum}} > type. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2338) Support comments in cgen and default templates
[ https://issues.apache.org/jira/browse/CAY-2338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2338: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Support comments in cgen and default templates > -- > > Key: CAY-2338 > URL: https://issues.apache.org/jira/browse/CAY-2338 > Project: Cayenne > Issue Type: Sub-task > Components: cgen, Modeler, Non-GUI Tools >Reporter: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > Now cgen module is created for each generation. > Prepare stage for this task: > * add cgen module with other modules when modeler is starting -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2378) Switch usage of SelectQuery to ObjectSelect internally
[ https://issues.apache.org/jira/browse/CAY-2378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2378: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > Switch usage of SelectQuery to ObjectSelect internally > -- > > Key: CAY-2378 > URL: https://issues.apache.org/jira/browse/CAY-2378 > Project: Cayenne > Issue Type: Task >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M2 > > > Recommended select query since 4.0 is {{ObjectSelect}}, that is converted > internally to {{SelectQuery}}. > We can gain some performance and maintainability by inverting this, i.e. > using {{ObjectSelect}} directly in Cayenne stack and converting > {{SelectQuery}} to it. > Important note: this should not affect any public API. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Updated] (CAY-2241) cdbimport: set ObjRelationship delete rule from FK metadata (if it's possible)
[ https://issues.apache.org/jira/browse/CAY-2241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev updated CAY-2241: - Fix Version/s: (was: 4.2.M1) 4.2.M2 > cdbimport: set ObjRelationship delete rule from FK metadata (if it's possible) > -- > > Key: CAY-2241 > URL: https://issues.apache.org/jira/browse/CAY-2241 > Project: Cayenne > Issue Type: Improvement > Components: dbimport, Modeler, Non-GUI Tools >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Major > Labels: pull-request-available > Fix For: 4.2.M2 > > > DbRelationship doesn't know anything about delete rule and just set it to > ObjRelationship's default ("Deny") in case of new relationship is detected in > cdbimport. > If we can set this value based on DB metadata this can save someone from > unnecessary troubles. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Closed] (CAY-2527) API to map Object[] result to POJO
[ https://issues.apache.org/jira/browse/CAY-2527?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev closed CAY-2527. Resolution: Fixed > API to map Object[] result to POJO > -- > > Key: CAY-2527 > URL: https://issues.apache.org/jira/browse/CAY-2527 > Project: Cayenne > Issue Type: Task > Components: Core Library >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M1 > > Time Spent: 20m > Remaining Estimate: 0h > > There are several queries that can return {{Object[]}} as a result (like > {{ColumnSelect}} or {{SQLSelect}}). It can be much more convenient if we can > map this result to some POJO. > API usage example: > {code} > class MyPojo { > String name; > long count; > MyPojo(Object[] data) { > this.name = (String)data[0]; > this.count = (Long)data[1]; > } > } > {code} > {code} > List result = ObjectSelect > .columnQuery(Artist.class, Artist.ARTIST_NAME, > Artist.PAINTING_ARRAY.count()) > .mapTo(MyPojo::new) > .select(context); > {code} -- This message was sent by Atlassian Jira (v8.3.2#803003)
[jira] [Closed] (CAY-2482) Method to return POJO object after SQLTemplate or SQLSelect perform
[ https://issues.apache.org/jira/browse/CAY-2482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev closed CAY-2482. Resolution: Duplicate > Method to return POJO object after SQLTemplate or SQLSelect perform > --- > > Key: CAY-2482 > URL: https://issues.apache.org/jira/browse/CAY-2482 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Reporter: Arseni Bulatski >Assignee: Nikita Timofeev >Priority: Major > Fix For: 4.2.M1 > > > Add methods to return POJO object after SQLTemplate or SQLSelect perform. > Example: > List result = SQLSelect.scalarQuery("SELECT PAINTING_ID, > PAINTING_TITLE, ESTIMATED_PRICE FROM PAINTING", Pojo.class) > .select(context); -- This message was sent by Atlassian Jira (v8.3.2#803003)
[GitHub] [cayenne] asfgit merged pull request #401: CAY-2527 Map Object[] result to pojo
asfgit merged pull request #401: CAY-2527 Map Object[] result to pojo URL: https://github.com/apache/cayenne/pull/401 This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services
[cayenne] 01/05: CAY-2527 API to map Object[] result to POJO
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 a405db945b3cb81d0ecd0f6a445b69d2041cc944 Author: Nikita Timofeev AuthorDate: Mon Aug 5 17:34:02 2019 +0300 CAY-2527 API to map Object[] result to POJO --- .../cayenne/access/DataDomainQueryAction.java | 60 ++--- .../org/apache/cayenne/query/ColumnSelect.java | 14 .../apache/cayenne/query/ColumnSelectMetadata.java | 11 +++ .../org/apache/cayenne/query/QueryMetadata.java| 8 +++ .../java/org/apache/cayenne/query/SQLSelect.java | 9 +++ .../java/org/apache/cayenne/query/SQLTemplate.java | 7 ++ .../apache/cayenne/query/SQLTemplateMetadata.java | 11 +++ .../org/apache/cayenne/query/ColumnSelectIT.java | 36 ++ .../java/org/apache/cayenne/query/SQLSelectIT.java | 78 +++--- 9 files changed, 212 insertions(+), 22 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java index 1128532..dba1041 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java @@ -59,6 +59,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Function; /** * Performs query routing and execution. During execution phase intercepts @@ -466,29 +467,38 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { @SuppressWarnings("unchecked") private void interceptObjectConversion() { -if (context != null && !metadata.isFetchingDataRows()) { - +if (context != null) { List mainRows = response.firstList(); // List or List if (mainRows != null && !mainRows.isEmpty()) { ObjectConversionStrategy converter; -List rsMapping = metadata.getResultSetMapping(); -if (rsMapping == null) { -converter = new SingleObjectConversionStrategy(); +if(metadata.isFetchingDataRows()) { +converter = new IdentityConversionStrategy(); } else { -if (metadata.isSingleResultSetMapping()) { -if (rsMapping.get(0) instanceof EntityResultSegment) { -converter = new SingleObjectConversionStrategy(); +List rsMapping = metadata.getResultSetMapping(); +if (rsMapping == null) { +converter = new SingleObjectConversionStrategy(); +} else { +if (metadata.isSingleResultSetMapping()) { +if (rsMapping.get(0) instanceof EntityResultSegment) { +converter = new SingleObjectConversionStrategy(); +} else { +converter = new SingleScalarConversionStrategy(); +} } else { -converter = new SingleScalarConversionStrategy(); +converter = new MixedConversionStrategy(); } -} else { -converter = new MixedConversionStrategy(); } } +if(metadata.getResultMapper() != null) { +converter = new MapperConversionStrategy(converter); +} + converter.convert(mainRows); +// rewind response after firstList() call +response.reset(); } } } @@ -775,4 +785,32 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { } } } + +private class IdentityConversionStrategy extends ObjectConversionStrategy { +@Override +void convert(List mainRows) { +} +} + +/** + * Conversion strategy that uses mapper function to map raw result + */ +private class MapperConversionStrategy extends ObjectConversionStrategy { + +private final Function mapper; +private final ObjectConversionStrategy parentStrategy; + +@SuppressWarnings("unchecked") +MapperConversionStrategy(ObjectConversionStrategy parentStrategy) { +this.mapper = (Function)metadata.getResultMapper(); +this.parentStrategy = (ObjectConversionStrategy)parentStrategy; +} + +@Override +void convert(List mainRows) { +parentStrategy.convert(mainRows); +mainRows.replaceAll(mapper::apply); +} +} + } diff --git
[cayenne] 04/05: Merge PR #401
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 6ed1a34f58a4ebe0ee2dc3655e4b65e061f0dd46 Merge: b40c722 d3856d2 Author: Nikita Timofeev AuthorDate: Mon Aug 26 15:43:22 2019 +0300 Merge PR #401 .../cayenne/access/DataDomainQueryAction.java | 60 +++--- .../org/apache/cayenne/query/ColumnSelect.java | 14 .../apache/cayenne/query/ColumnSelectMetadata.java | 16 .../org/apache/cayenne/query/QueryMetadata.java| 8 ++ .../java/org/apache/cayenne/query/SQLSelect.java | 9 +++ .../java/org/apache/cayenne/query/SQLTemplate.java | 7 ++ .../apache/cayenne/query/SQLTemplateMetadata.java | 15 .../org/apache/cayenne/reflect/PojoMapper.java | 93 ++ .../org/apache/cayenne/query/ColumnSelectIT.java | 62 +++ .../java/org/apache/cayenne/query/SQLSelectIT.java | 78 +++--- .../org/apache/cayenne/reflect/PojoMapperTest.java | 88 11 files changed, 428 insertions(+), 22 deletions(-)
[cayenne] branch master updated (b40c722 -> 68eb7b1)
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 b40c722 CAY-2610 Align methods in ObjectSelect and SQLSelect new a405db9 CAY-2527 API to map Object[] result to POJO new a8c2c79 CAY-2527 API to map Object[] result to POJO - simple Object[] to Pojo mapper new d3856d2 CAY-2527 API to map Object[] result to POJO - combine multiple mappers new 6ed1a34 Merge PR #401 new 68eb7b1 Merge PR #401 The 5 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: .../cayenne/access/DataDomainQueryAction.java | 60 +++--- .../org/apache/cayenne/query/ColumnSelect.java | 14 .../apache/cayenne/query/ColumnSelectMetadata.java | 16 .../org/apache/cayenne/query/QueryMetadata.java| 8 ++ .../java/org/apache/cayenne/query/SQLSelect.java | 9 +++ .../java/org/apache/cayenne/query/SQLTemplate.java | 7 ++ .../apache/cayenne/query/SQLTemplateMetadata.java | 15 .../org/apache/cayenne/reflect/PojoMapper.java | 93 ++ .../org/apache/cayenne/query/ColumnSelectIT.java | 62 +++ .../java/org/apache/cayenne/query/SQLSelectIT.java | 78 +++--- .../org/apache/cayenne/reflect/PojoMapperTest.java | 88 11 files changed, 428 insertions(+), 22 deletions(-) create mode 100644 cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java create mode 100644 cayenne-server/src/test/java/org/apache/cayenne/reflect/PojoMapperTest.java
[cayenne] 03/05: CAY-2527 API to map Object[] result to POJO - combine multiple mappers
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 d3856d212d7c050c4185ede7ad0e7add56923fd8 Author: Nikita Timofeev AuthorDate: Wed Aug 7 17:04:23 2019 +0300 CAY-2527 API to map Object[] result to POJO - combine multiple mappers --- .../apache/cayenne/query/ColumnSelectMetadata.java | 7 +- .../apache/cayenne/query/SQLTemplateMetadata.java | 6 - .../org/apache/cayenne/query/ColumnSelectIT.java | 26 ++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelectMetadata.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelectMetadata.java index 2ab406e..1222346 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelectMetadata.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelectMetadata.java @@ -136,8 +136,13 @@ class ColumnSelectMetadata extends ObjectSelectMetadata { this.suppressingDistinct = suppressingDistinct; } + @SuppressWarnings("unchecked") void setResultMapper(Function resultMapper) { - this.resultMapper = resultMapper; + if(this.resultMapper != null) { + this.resultMapper = this.resultMapper.andThen((Function)resultMapper); + } else { + this.resultMapper = resultMapper; + } } @Override diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java index 6bd92ed..99910ca 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLTemplateMetadata.java @@ -129,7 +129,11 @@ public class SQLTemplateMetadata extends BaseQueryMetadata { } void setResultMapper(Function resultMapper) { - this.resultMapper = resultMapper; + if(this.resultMapper != null) { + this.resultMapper = this.resultMapper.andThen((Function)resultMapper); + } else { + this.resultMapper = resultMapper; + } } @Override diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java index 6ec41fb..5220e7b 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java @@ -1178,6 +1178,25 @@ public class ColumnSelectIT extends ServerCase { assertNotNull(testPojo19.date); } +@Test +public void testDoubleMapToPojo() { +List result = ObjectSelect.query(Artist.class) +.columns(Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH, Artist.ARTIST_NAME.trim().length()) +.where(Artist.ARTIST_NAME.like("artist%")) +.orderBy(Artist.ARTIST_ID_PK_PROPERTY.asc()) +.map(TestPojo::new) +.map(TestPojo2::new) +.select(context); +assertEquals(20, result.size()); + +TestPojo2 testPojo0 = result.get(0); +assertNotNull(testPojo0); +assertEquals("artist1", testPojo0.pojo.name); +assertNotNull(testPojo0.pojo.date); +assertEquals(7, testPojo0.pojo.length); + +} + static class TestPojo { String name; Date date; @@ -1188,4 +1207,11 @@ public class ColumnSelectIT extends ServerCase { length = (Integer)data[2]; } } + +static class TestPojo2 { +TestPojo pojo; +TestPojo2(TestPojo pojo) { +this.pojo = pojo; +} +} }
[cayenne] 02/05: CAY-2527 API to map Object[] result to POJO - simple Object[] to Pojo mapper
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 a8c2c79a01a72fcb56dafbbbd7f4844df4185480 Author: Nikita Timofeev AuthorDate: Mon Aug 5 17:34:21 2019 +0300 CAY-2527 API to map Object[] result to POJO - simple Object[] to Pojo mapper --- .../org/apache/cayenne/reflect/PojoMapper.java | 93 ++ .../org/apache/cayenne/reflect/PojoMapperTest.java | 88 2 files changed, 181 insertions(+) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java new file mode 100644 index 000..c0abf6e --- /dev/null +++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java @@ -0,0 +1,93 @@ +/* + * 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 + * + *http://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.reflect; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.reflect.Field; +import java.util.function.Function; + +import org.apache.cayenne.CayenneRuntimeException; + +/** + * Simple mapper of Object[] to POJO class. This class relies on field order, so use with caution. + * @param type of object to produce + * @since 4.2 + */ +public class PojoMapper implements Function { + +private static MethodHandles.Lookup lookup = MethodHandles.lookup(); + +private final Class type; +private final MethodHandle constructor; +private final MethodHandle[] setters; + +public PojoMapper(Class type) { +this.type = type; +try { +this.constructor = lookup.unreflectConstructor(type.getConstructor()); +} catch (NoSuchMethodException | IllegalAccessException ex) { +throw new CayenneRuntimeException("No default constructor found for class '%s'.", type.getName()); +} + +Field[] declaredFields = type.getDeclaredFields(); +this.setters = new MethodHandle[declaredFields.length]; +int i = 0; +for(Field field : declaredFields) { +field.setAccessible(true); +try { +setters[i++] = lookup.unreflectSetter(field); +} catch (IllegalAccessException e) { +throw new CayenneRuntimeException("Field '%s'.'%s' is inaccessible.", e, type.getName(), field.getName()); +} +} +} + +private T newObject() { +try { +@SuppressWarnings("unchecked") +T object = (T)constructor.invoke(); +return object; +} catch (Throwable ex) { +throw new CayenneRuntimeException("Unable to instantiate %s.", ex, type.getName()); +} +} + +public T apply(Object[] data) { +if(data.length > setters.length) { +throw new CayenneRuntimeException("Unable to create '%s'. Values length (%d) > fields count (%d)" +, type.getName(), data.length, setters.length); +} + +T object = newObject(); + +for (int i = 0; i < data.length; i++) { +if (data[i] != null) { +try { +setters[i].invoke(object, data[i]); +} catch (Throwable ex) { +throw new CayenneRuntimeException("Unable to set field of %s.", ex, type.getName()); +} +} +} + +return object; +} +} diff --git a/cayenne-server/src/test/java/org/apache/cayenne/reflect/PojoMapperTest.java b/cayenne-server/src/test/java/org/apache/cayenne/reflect/PojoMapperTest.java new file mode 100644 index 000..a593a42 --- /dev/null +++ b/cayenne-server/src/test/java/org/apache/cayenne/reflect/PojoMapperTest.java @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional
[cayenne] 05/05: Merge PR #401
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 68eb7b1f2a2b7ce6917bd46f008cd1f4a9e93929 Author: Nikita Timofeev AuthorDate: Mon Aug 26 15:45:11 2019 +0300 Merge PR #401 --- cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java index 5e4c5a2..57d4845 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLSelectIT.java @@ -177,7 +177,7 @@ public class SQLSelectIT extends ServerCase { createArtistDataSet(); List result = SQLSelect - .arrayQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT") + .columnQuery("SELECT #result('ARTIST_ID' 'java.lang.Long'), #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST_CT") .map(ArtistDataWrapper::new) .select(context);
[jira] [Closed] (CAY-2610) Align methods in ObjectSelect and SQLSelect
[ https://issues.apache.org/jira/browse/CAY-2610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikita Timofeev closed CAY-2610. Resolution: Fixed https://github.com/apache/cayenne/commit/be23f59f5c371d9eef02eb1550d8fe68d970da1e > Align methods in ObjectSelect and SQLSelect > --- > > Key: CAY-2610 > URL: https://issues.apache.org/jira/browse/CAY-2610 > Project: Cayenne > Issue Type: Improvement > Components: Core Library >Reporter: Nikita Timofeev >Assignee: Nikita Timofeev >Priority: Minor > Fix For: 4.2.M1 > > > Both {{ObjectSelect}} and {{SQLSelect}} have method to get raw {{Object[]}} > from DB. We shoud align naming and signature of such methods. There are three > variants now: {{columnQuery()}}, {{scalarQuery()}} and {{arrayQuery()}}. > The first one is the closest to what actually these methods do, i.e. > selecting some set of columns from a table, so we can use it. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[cayenne] branch master updated: CAY-2610 Align methods in ObjectSelect and SQLSelect
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 The following commit(s) were added to refs/heads/master by this push: new b40c722 CAY-2610 Align methods in ObjectSelect and SQLSelect b40c722 is described below commit b40c722ae5fa9faf2ca7ed5f878d2a926a6f8610 Author: Nikita Timofeev AuthorDate: Mon Aug 26 15:36:13 2019 +0300 CAY-2610 Align methods in ObjectSelect and SQLSelect --- RELEASE-NOTES.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index f806fc9..6908e04 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -42,6 +42,7 @@ CAY-2590 Add method to set query timeout to queries CAY-2592 Modeler: make all datamaps selected in global cgen tab CAY-2593 Add tableTypes field to dbImport config in dataMap CAY-2602 Remove RTRIM of char columns in Sybase +CAY-2610 Align methods in ObjectSelect and SQLSelect Bug Fixes:
[cayenne] branch master updated: CAY-2610 Align methods in ObjectSelect and SQLSelect
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 The following commit(s) were added to refs/heads/master by this push: new be23f59 CAY-2610 Align methods in ObjectSelect and SQLSelect be23f59 is described below commit be23f59f5c371d9eef02eb1550d8fe68d970da1e Author: Nikita Timofeev AuthorDate: Mon Aug 26 15:35:16 2019 +0300 CAY-2610 Align methods in ObjectSelect and SQLSelect --- .../org/apache/cayenne/query/ColumnSelect.java | 29 + .../org/apache/cayenne/query/ObjectSelect.java | 15 - .../java/org/apache/cayenne/query/SQLSelect.java | 37 +++--- .../java/org/apache/cayenne/query/SQLSelectIT.java | 14 4 files changed, 48 insertions(+), 47 deletions(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java index b82c8c8..a102fcd 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java @@ -384,18 +384,19 @@ public class ColumnSelect extends FluentSelect { * } * * - * @param firstProperty first property - * @param otherProperties array of properties to select + * @param properties array of properties to select * @see ColumnSelect#column(BaseProperty) * @see ColumnSelect#columns(Collection) */ @SuppressWarnings("unchecked") -public ColumnSelect columns(BaseProperty firstProperty, BaseProperty... otherProperties) { +public ColumnSelect columns(BaseProperty... properties) { +if (properties.length == 0) { +throw new IllegalArgumentException("properties must contain at least one element"); +} if (columns == null) { -columns = new ArrayList<>(otherProperties.length + 1); +columns = new ArrayList<>(properties.length); } -columns.add(firstProperty); -Collections.addAll(columns, otherProperties); +Collections.addAll(columns, properties); singleColumn = false; return (ColumnSelect)this; } @@ -406,7 +407,7 @@ public class ColumnSelect extends FluentSelect { * (root entity properties, function call expressions, properties of relationships, etc). * * @param properties collection of properties, must contain at least one element - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) */ @SuppressWarnings("unchecked") public ColumnSelect columns(Collection> properties) { @@ -438,7 +439,7 @@ public class ColumnSelect extends FluentSelect { } /** - * Shortcut for {@link #columns(BaseProperty, BaseProperty[])} columns}(Property.COUNT) + * Shortcut for {@link #columns(BaseProperty[])} columns}(Property.COUNT) */ public ColumnSelect count() { return columns(PropertyFactory.COUNT); @@ -455,7 +456,7 @@ public class ColumnSelect extends FluentSelect { /** * Select minimum value of property - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) */ public ColumnSelect min(ComparableProperty property) { return columns(property.min()); @@ -463,7 +464,7 @@ public class ColumnSelect extends FluentSelect { /** * Select maximum value of property - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) */ public ColumnSelect max(ComparableProperty property) { return columns(property.max()); @@ -471,7 +472,7 @@ public class ColumnSelect extends FluentSelect { /** * Select average value of property - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) * @deprecated since 4.2 use {@link #avg(NumericProperty)} */ @Deprecated @@ -481,7 +482,7 @@ public class ColumnSelect extends FluentSelect { /** * Select average value of property - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) */ public ColumnSelect avg(NumericProperty property) { return columns(property.avg()); @@ -489,7 +490,7 @@ public class ColumnSelect extends FluentSelect { /** * Select sum of values - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see ColumnSelect#columns(BaseProperty[]) * @deprecated since 4.2 use {@link #sum(NumericProperty)} */ @Deprecated @@ -499,7 +500,7 @@ public class ColumnSelect extends FluentSelect { /** * Select sum of values - * @see ColumnSelect#columns(BaseProperty, BaseProperty[]) + * @see
[jira] [Created] (CAY-2610) Align methods in ObjectSelect and SQLSelect
Nikita Timofeev created CAY-2610: Summary: Align methods in ObjectSelect and SQLSelect Key: CAY-2610 URL: https://issues.apache.org/jira/browse/CAY-2610 Project: Cayenne Issue Type: Improvement Components: Core Library Reporter: Nikita Timofeev Assignee: Nikita Timofeev Fix For: 4.2.M1 Both {{ObjectSelect}} and {{SQLSelect}} have method to get raw {{Object[]}} from DB. We shoud align naming and signature of such methods. There are three variants now: {{columnQuery()}}, {{scalarQuery()}} and {{arrayQuery()}}. The first one is the closest to what actually these methods do, i.e. selecting some set of columns from a table, so we can use it. -- This message was sent by Atlassian Jira (v8.3.2#803003)
[cayenne] branch master updated: Oracle: better mapping of DECIMAL type
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 The following commit(s) were added to refs/heads/master by this push: new fee7342 Oracle: better mapping of DECIMAL type fee7342 is described below commit fee734289b2443518f8f6b884d411d25dfb87cfa Author: Nikita Timofeev AuthorDate: Mon Aug 26 15:10:35 2019 +0300 Oracle: better mapping of DECIMAL type --- .../src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java index 0065bb2..453aae8 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java @@ -262,7 +262,11 @@ public class OracleAdapter extends JdbcAdapter { DbAttribute attr = super.buildAttribute(name, typeName, type, size, scale, allowNulls); if (type == Types.DECIMAL && scale <= 0) { - attr.setType(Types.INTEGER); + if (size <= 9) { + attr.setType(Types.INTEGER); + } else if(size <= 19) { + attr.setType(Types.BIGINT); + } attr.setScale(-1); } else if (type == Types.OTHER) { // in this case we need to guess the attribute type
[jira] [Commented] (CAY-2607) java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
[ https://issues.apache.org/jira/browse/CAY-2607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16915744#comment-16915744 ] Nikita Timofeev commented on CAY-2607: -- Hi [~jeisonmp]! Thanks for your report. Could you please show what does your DB layer look like? I'm interested in the DB type of ID_COD_VERIF field in the Cayenne model. > java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.Long > > > Key: CAY-2607 > URL: https://issues.apache.org/jira/browse/CAY-2607 > Project: Cayenne > Issue Type: Bug > Components: Modeler >Affects Versions: 4.1.B2 >Reporter: MAX JEISON PRASS >Assignee: Nikita Timofeev >Priority: Critical > Labels: easyfix > Fix For: 4.1.B3, 4.2.M1 > > Attachments: cayenne - error Cast Int to Long.PNG > > > I have a PK property in table of oracle database, type NUMERIC(19). > Modeler generate correct the type this property to Long, but a runtime > Exception when cast Objet to Long. > I dont know when this error occurs, because any times this error dont occurs. > > The Log Error is: > Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to > java.lang.LongCaused by: java.lang.ClassCastException: java.lang.Integer > cannot be cast to java.lang.Long at > br.com.getnet.portais.minhaconta.atendimento.domain.minhaconta.model.auto._CodigoVerificacaoEntity.writePropertyDirectly(_CodigoVerificacaoEntity.java:128) > at > org.apache.cayenne.reflect.generic.DataObjectBaseProperty.writePropertyDirectly(DataObjectBaseProperty.java:84) > at > org.apache.cayenne.access.DataDomainSyncBucket.postprocess(DataDomainSyncBucket.java:178) > at > org.apache.cayenne.access.DataDomainInsertBucket.postprocess(DataDomainInsertBucket.java:214) > at > org.apache.cayenne.access.DataDomainFlushAction.postprocess(DataDomainFlushAction.java:248) > at > org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:155) > at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:624) at > org.apache.cayenne.access.DataDomain.onSyncNoFilters(DataDomain.java:594) at > org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:822) > at > org.apache.cayenne.tx.TransactionFilter.lambda$onSync$0(TransactionFilter.java:61) > at > org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:183) > at > org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInNewTransaction(DefaultTransactionManager.java:155) > at > org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:98) > at > org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:65) > at > org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:43) > at org.apache.cayenne.tx.TransactionFilter.onSync(TransactionFilter.java:61) > at > org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:821) > at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:581) at > org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:742) ... > 53 more -- This message was sent by Atlassian Jira (v8.3.2#803003)
[cayenne] branch STABLE-4.1 updated: CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch STABLE-4.1 in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/STABLE-4.1 by this push: new 8790b66 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource 8790b66 is described below commit 8790b663b47b84c792cd63faee3e3af61e39fc42 Author: Arseni Bulatski AuthorDate: Mon Aug 26 12:19:31 2019 +0300 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource (cherry picked from commit 7e89e91a4ea3f2784a97813666dc15e0cfb9a20b) --- .../java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java | 5 + .../org/apache/cayenne/modeler/action/ReverseEngineeringAction.java | 5 + 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java index 4ac5be2..0d715d2 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java @@ -123,10 +123,7 @@ public class LoadDbSchemaAction extends CayenneAction { Preferences dataMapPreference = getProjectController(). getDataMapPreferences(getProjectController().getCurrentDataMap()) .getCurrentPreference(); -return dataMapPreference == null || dataMapPreference.get(URL_PROPERTY, null) == null || -dataMapPreference.get(USER_NAME_PROPERTY, null) == null || -dataMapPreference.get(PASSWORD_PROPERTY, null) == null || -dataMapPreference.get(JDBC_DRIVER_PROPERTY, null) == null; +return dataMapPreference == null || dataMapPreference.get(URL_PROPERTY, null) == null; } private DBConnectionInfo getConnectionInfoFromPreferences() { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java index 71076d1..51f0869 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java @@ -178,10 +178,7 @@ public class ReverseEngineeringAction extends DBWizardAction
[cayenne] branch master updated: CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/master by this push: new 7e89e91 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource 7e89e91 is described below commit 7e89e91a4ea3f2784a97813666dc15e0cfb9a20b Author: Arseni Bulatski AuthorDate: Mon Aug 26 12:19:31 2019 +0300 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource --- .../java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java | 5 + .../org/apache/cayenne/modeler/action/ReverseEngineeringAction.java | 5 + 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java index df85e6a..3b6d773 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java @@ -123,10 +123,7 @@ public class LoadDbSchemaAction extends CayenneAction { Preferences dataMapPreference = getProjectController(). getDataMapPreferences(getProjectController().getCurrentDataMap()) .getCurrentPreference(); -return dataMapPreference == null || dataMapPreference.get(URL_PROPERTY, null) == null || -dataMapPreference.get(USER_NAME_PROPERTY, null) == null || -dataMapPreference.get(PASSWORD_PROPERTY, null) == null || -dataMapPreference.get(JDBC_DRIVER_PROPERTY, null) == null; +return dataMapPreference == null || dataMapPreference.get(URL_PROPERTY, null) == null; } private DBConnectionInfo getConnectionInfoFromPreferences() { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java index bf3f316..3798f2c 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ReverseEngineeringAction.java @@ -178,10 +178,7 @@ public class ReverseEngineeringAction extends DBWizardAction
[jira] [Commented] (CAY-2608) CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
[ https://issues.apache.org/jira/browse/CAY-2608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16915626#comment-16915626 ] Arseni Bulatski commented on CAY-2608: -- *4.2* [https://github.com/apache/cayenne/commit/efc3834458874e42f60dd347c797f21200ccdd1e] *4.1* https://github.com/apache/cayenne/commit/761fceea3edd49ef784d43e9d0e01c6f428d71f5 > CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource > > > Key: CAY-2608 > URL: https://issues.apache.org/jira/browse/CAY-2608 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B3 > Environment: CayenneModeler 4.1.B3-SNAPSHOT, my own Mac assembly >Reporter: Andrus Adamchik >Priority: Minor > Fix For: 4.1.B3 > > > 0. In the modeler preferences create a DataSource with "Automatic" adapter > 1. Start a new project > 2. Create a new DataMap > 3. Switch to "DbImport" tab, click "Run Import" > 4. When prompted, select the DataSource above and click "Continue" > Result: error dialog with the exception below. > {noformat} > CayenneModeler Info > Version: 4.1.B3-SNAPSHOT > Build Date: Aug 20 2019 11:02:28 > Exception: > = > java.lang.NullPointerException > at > java.prefs/java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:249) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.saveConnectionInfo(ReverseEngineeringAction.java:160) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.startImport(ReverseEngineeringAction.java:91) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.performAction(ReverseEngineeringAction.java:137) > at > org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171) > at > java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) > at > java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) > at > java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at > java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at > java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) > at > java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) > at > java.desktop/java.awt.Component.processMouseEvent(Component.java:6632) > at > java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) > at java.desktop/java.awt.Component.processEvent(Component.java:6397) > at java.desktop/java.awt.Container.processEvent(Container.java:2263) > at > java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) > at > java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) > at > java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at >
[jira] [Assigned] (CAY-2608) CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
[ https://issues.apache.org/jira/browse/CAY-2608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Arseni Bulatski reassigned CAY-2608: Assignee: Arseni Bulatski > CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource > > > Key: CAY-2608 > URL: https://issues.apache.org/jira/browse/CAY-2608 > Project: Cayenne > Issue Type: Bug >Affects Versions: 4.1.B3 > Environment: CayenneModeler 4.1.B3-SNAPSHOT, my own Mac assembly >Reporter: Andrus Adamchik >Assignee: Arseni Bulatski >Priority: Minor > Fix For: 4.1.B3 > > > 0. In the modeler preferences create a DataSource with "Automatic" adapter > 1. Start a new project > 2. Create a new DataMap > 3. Switch to "DbImport" tab, click "Run Import" > 4. When prompted, select the DataSource above and click "Continue" > Result: error dialog with the exception below. > {noformat} > CayenneModeler Info > Version: 4.1.B3-SNAPSHOT > Build Date: Aug 20 2019 11:02:28 > Exception: > = > java.lang.NullPointerException > at > java.prefs/java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:249) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.saveConnectionInfo(ReverseEngineeringAction.java:160) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.startImport(ReverseEngineeringAction.java:91) > at > org.apache.cayenne.modeler.action.ReverseEngineeringAction.performAction(ReverseEngineeringAction.java:137) > at > org.apache.cayenne.modeler.util.CayenneAction.actionPerformed(CayenneAction.java:171) > at > java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) > at > java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) > at > java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at > java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at > java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) > at > java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) > at > java.desktop/java.awt.Component.processMouseEvent(Component.java:6632) > at > java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) > at java.desktop/java.awt.Component.processEvent(Component.java:6397) > at java.desktop/java.awt.Container.processEvent(Container.java:2263) > at > java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) > at > java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) > at > java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) > at > java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840) > at > java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) > at > java.base/java.security.AccessController.doPrivileged(AccessController.java:389) > at > java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) > at > java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at > java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at >
[cayenne] branch master updated: CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/master by this push: new efc3834 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource efc3834 is described below commit efc3834458874e42f60dd347c797f21200ccdd1e Author: Arseni Bulatski AuthorDate: Mon Aug 26 11:56:23 2019 +0300 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource --- RELEASE-NOTES.txt | 1 + .../java/org/apache/cayenne/dba/AutoAdapter.java | 5 +-- .../modeler/action/GetDbConnectionAction.java | 12 +++--- .../cayenne/modeler/action/LoadDbSchemaAction.java | 22 --- .../modeler/action/ReverseEngineeringAction.java | 46 ++ .../modeler/dialog/db/DataSourceWizard.java| 24 +-- 6 files changed, 68 insertions(+), 42 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5b4c2e6..f806fc9 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -79,6 +79,7 @@ CAY-2600 Modeler DbImport: Can't retrieve schema for databases with no catalog s CAY-2601 Modeler DbImport: result dialog issues CAY-2603 NPE reloading project in the model CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException +CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource -- Release: 4.1.B1 diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java index 7595eed..7c856f0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java @@ -22,7 +22,6 @@ package org.apache.cayenne.dba; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.function.Function; @@ -256,11 +255,11 @@ public class AutoAdapter implements DbAdapter { @Override public List getSystemCatalogs() { - return Collections.emptyList(); + return getAdapter().getSystemCatalogs(); } @Override public List getSystemSchemas() { - return Collections.emptyList(); + return getAdapter().getSystemSchemas(); } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java index 9112cb0..2e83a27 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java @@ -19,19 +19,19 @@ package org.apache.cayenne.modeler.action; +import java.awt.event.ActionEvent; +import java.util.Collection; + import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.dialog.db.DataSourceWizard; import org.apache.cayenne.modeler.dialog.db.DbActionOptionsDialog; import org.apache.cayenne.modeler.pref.DataMapDefaults; -import java.awt.event.ActionEvent; -import java.util.Collection; - import static org.apache.cayenne.modeler.pref.DBConnectionInfo.DB_ADAPTER_PROPERTY; +import static org.apache.cayenne.modeler.pref.DBConnectionInfo.JDBC_DRIVER_PROPERTY; +import static org.apache.cayenne.modeler.pref.DBConnectionInfo.PASSWORD_PROPERTY; import static org.apache.cayenne.modeler.pref.DBConnectionInfo.URL_PROPERTY; import static org.apache.cayenne.modeler.pref.DBConnectionInfo.USER_NAME_PROPERTY; -import static org.apache.cayenne.modeler.pref.DBConnectionInfo.PASSWORD_PROPERTY; -import static org.apache.cayenne.modeler.pref.DBConnectionInfo.JDBC_DRIVER_PROPERTY; /** * @since 4.1 @@ -69,6 +69,8 @@ public class GetDbConnectionAction extends DBWizardAction if (connectWizard.getConnectionInfo().getDbAdapter() != null) { dataMapDefaults.getCurrentPreference().put(DB_ADAPTER_PROPERTY, connectWizard.getConnectionInfo().getDbAdapter()); +} else { +dataMapDefaults.getCurrentPreference().remove(DB_ADAPTER_PROPERTY); } dataMapDefaults.getCurrentPreference().put(URL_PROPERTY, connectWizard.getConnectionInfo().getUrl()); dataMapDefaults.getCurrentPreference().put(USER_NAME_PROPERTY, connectWizard.getConnectionInfo().getUserName()); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java index 911b6d5..df85e6a 100644 ---
[cayenne] branch STABLE-4.1 updated: CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
This is an automated email from the ASF dual-hosted git repository. abulatski pushed a commit to branch STABLE-4.1 in repository https://gitbox.apache.org/repos/asf/cayenne.git The following commit(s) were added to refs/heads/STABLE-4.1 by this push: new 761fcee CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource 761fcee is described below commit 761fceea3edd49ef784d43e9d0e01c6f428d71f5 Author: Arseni Bulatski AuthorDate: Mon Aug 26 11:56:23 2019 +0300 CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource --- RELEASE-NOTES.txt | 1 + .../java/org/apache/cayenne/dba/AutoAdapter.java | 5 +-- .../modeler/action/GetDbConnectionAction.java | 12 +++--- .../cayenne/modeler/action/LoadDbSchemaAction.java | 22 --- .../modeler/action/ReverseEngineeringAction.java | 46 ++ .../modeler/dialog/db/DataSourceWizard.java| 24 +-- 6 files changed, 68 insertions(+), 42 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index dce7b52..8947fe4 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -35,6 +35,7 @@ CAY-2601 Modeler DbImport: result dialog issues CAY-2603 NPE reloading project in the model CAY-2605 Modeler: Unable to save - java.nio.file.InvalidPathException CAY-2606 Can't resolve obj path with embeddable component +CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource -- Release: 4.1.B2 diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java index 77ef360..72ef6a5 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/AutoAdapter.java @@ -22,7 +22,6 @@ package org.apache.cayenne.dba; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Collection; -import java.util.Collections; import java.util.List; import org.apache.cayenne.CayenneRuntimeException; @@ -247,11 +246,11 @@ public class AutoAdapter implements DbAdapter { @Override public List getSystemCatalogs() { - return Collections.emptyList(); + return getAdapter().getSystemCatalogs(); } @Override public List getSystemSchemas() { - return Collections.emptyList(); + return getAdapter().getSystemSchemas(); } } diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java index 8328861..62c089e 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java @@ -19,19 +19,19 @@ package org.apache.cayenne.modeler.action; +import java.awt.event.ActionEvent; +import java.util.Collection; + import org.apache.cayenne.modeler.Application; import org.apache.cayenne.modeler.dialog.db.DataSourceWizard; import org.apache.cayenne.modeler.dialog.db.DbActionOptionsDialog; import org.apache.cayenne.modeler.pref.DataMapDefaults; -import java.awt.event.ActionEvent; -import java.util.Collection; - import static org.apache.cayenne.modeler.pref.DBConnectionInfo.DB_ADAPTER_PROPERTY; +import static org.apache.cayenne.modeler.pref.DBConnectionInfo.JDBC_DRIVER_PROPERTY; +import static org.apache.cayenne.modeler.pref.DBConnectionInfo.PASSWORD_PROPERTY; import static org.apache.cayenne.modeler.pref.DBConnectionInfo.URL_PROPERTY; import static org.apache.cayenne.modeler.pref.DBConnectionInfo.USER_NAME_PROPERTY; -import static org.apache.cayenne.modeler.pref.DBConnectionInfo.PASSWORD_PROPERTY; -import static org.apache.cayenne.modeler.pref.DBConnectionInfo.JDBC_DRIVER_PROPERTY; /** * @since 4.1 @@ -69,6 +69,8 @@ public class GetDbConnectionAction extends DBWizardAction if (connectWizard.getConnectionInfo().getDbAdapter() != null) { dataMapDefaults.getCurrentPreference().put(DB_ADAPTER_PROPERTY, connectWizard.getConnectionInfo().getDbAdapter()); +} else { +dataMapDefaults.getCurrentPreference().remove(DB_ADAPTER_PROPERTY); } dataMapDefaults.getCurrentPreference().put(URL_PROPERTY, connectWizard.getConnectionInfo().getUrl()); dataMapDefaults.getCurrentPreference().put(USER_NAME_PROPERTY, connectWizard.getConnectionInfo().getUserName()); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/LoadDbSchemaAction.java index f055a91..4ac5be2 100644 ---