[jira] [Commented] (CAY-2598) Oracle dbImport bug

2019-08-26 Thread Arseni Bulatski (Jira)


[ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


[ 
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

2019-08-26 Thread abulatski
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

2019-08-26 Thread abulatski
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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)

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread GitBox
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread ntimofeev
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)

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread Nikita Timofeev (Jira)


 [ 
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread Nikita Timofeev (Jira)
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

2019-08-26 Thread ntimofeev
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

2019-08-26 Thread Nikita Timofeev (Jira)


[ 
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

2019-08-26 Thread abulatski
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

2019-08-26 Thread abulatski
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

2019-08-26 Thread Arseni Bulatski (Jira)


[ 
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

2019-08-26 Thread Arseni Bulatski (Jira)


 [ 
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

2019-08-26 Thread abulatski
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

2019-08-26 Thread abulatski
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
---