[jira] [Updated] (CAY-2333) Project XML extensions

2018-05-23 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.1.M2)
   4.2.M1

> 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.M1
>
>
> 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
(v7.6.3#76005)


[jira] [Updated] (CAY-2332) Property API: unable to use eq() and in() methods for toMany relationships

2018-05-23 Thread Nikita Timofeev (JIRA)

 [ 
https://issues.apache.org/jira/browse/CAY-2332?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev updated CAY-2332:
-
Fix Version/s: (was: 4.1.M2)
   4.2.M1

> Property API: unable to use eq() and in() methods for toMany relationships
> --
>
> Key: CAY-2332
> URL: https://issues.apache.org/jira/browse/CAY-2332
> Project: Cayenne
>  Issue Type: Bug
>Reporter: Nikita Timofeev
>Priority: Major
> Fix For: 4.2.M1
>
>
> Following code won't compile as {{eq()}} (as well as {{in()}}) method require 
> {{List}} or other Property<> in this case, but everything else 
> down the stack will correctly translate and execute this query and return 
> correct result (I've checked this by simply allowing {{Object}} as argument 
> in {{eq()}})
> {code}
> Painting painting = 
> ObjectSelect.query(Painting.class).selectFirst(context);
> Artist artist = ObjectSelect.query(Artist.class)
> .where(Artist.PAINTING_ARRAY.eq(painting))
> .selectFirst(context);
> {code}
> Generated SQL:
> {code:sql}
> SELECT DISTINCT t0.ARTIST_NAME, t0.DATE_OF_BIRTH, t0.ARTIST_ID 
> FROM ARTIST t0 
> JOIN PAINTING t1 ON (t0.ARTIST_ID = t1.ARTIST_ID) 
> WHERE t1.PAINTING_ID = ? 
> LIMIT 1 OFFSET 0 
> [bind: 1->PAINTING_ID:1]
> {code}
> Workaround can be parsing expression from string:
> {{.where(ExpressionFactory.exp("paintingArray = $p", painting))}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Updated] (CAY-2314) Problem in UnmanagedPoolingDataSource with managing closed Derby connection

2018-05-23 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.1.M2)
   4.2.M1

> 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.M1
>
>
> 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
(v7.6.3#76005)


[jira] [Updated] (CAY-2378) Switch usage of SelectQuery to ObjectSelect internally

2018-05-23 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.1.M2)
   4.2.M1

> 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
>Priority: Major
> Fix For: 4.2.M1
>
>
> 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
(v7.6.3#76005)


[jira] [Updated] (CAY-2338) Support comments in cgen and default templates

2018-05-23 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.1.M2)
   4.2.M1

> 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: Modeler, Non-GUI Tools
>Reporter: Nikita Timofeev
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.2.M1
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Closed] (CAY-2435) cdbimport: procedure parameters are not imported

2018-05-23 Thread Nikita Timofeev (JIRA)

 [ 
https://issues.apache.org/jira/browse/CAY-2435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev closed CAY-2435.

Resolution: Fixed

Fixed for *4.0* per 
https://github.com/apache/cayenne/commit/21732820a38c9d8c32b0b311b8edf53a320d91ff

> cdbimport: procedure parameters are not imported
> 
>
> Key: CAY-2435
> URL: https://issues.apache.org/jira/browse/CAY-2435
> Project: Cayenne
>  Issue Type: Bug
>  Components: Modeler, Non-GUI Tools
>Affects Versions: 4.1.M1, 4.0.RC1
>Reporter: Nikita Timofeev
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.0.RC2, 4.1.M2
>
>
> Procedures are always imported without parameters in reverse engineering 
> (both in modeler and maven/gradle plugins).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


cayenne git commit: CAY-2435 cdbimport: procedure parameters are not imported

2018-05-23 Thread ntimofeev
Repository: cayenne
Updated Branches:
  refs/heads/master 26dc6a268 -> 6ea7f3958


CAY-2435 cdbimport: procedure parameters are not imported


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6ea7f395
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6ea7f395
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6ea7f395

Branch: refs/heads/master
Commit: 6ea7f3958119c2d5f5a3bdfd3a863335705def4f
Parents: 26dc6a2
Author: Nikita Timofeev 
Authored: Wed May 23 12:19:39 2018 +0300
Committer: Nikita Timofeev 
Committed: Wed May 23 12:21:54 2018 +0300

--
 RELEASE-NOTES.txt   |  1 +
 .../dbsync/reverse/dbload/ProcedureColumnLoader.java| 12 +---
 2 files changed, 10 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cayenne/blob/6ea7f395/RELEASE-NOTES.txt
--
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 2923e0b..27fe24d 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -59,6 +59,7 @@ CAY-2425 Modeler: Migrate DB Direction field is locked if no 
option was selected
 CAY-2427 Modeler: Undo throws exception
 CAY-2429 Generate classes: Invalid template type: EMBEDDABLE_SINGLE_CLASS
 CAY-2430 Modeler: Redo throws NPE
+CAY-2435 cdbimport: procedure parameters are not imported
 CAY-2436 NPE in CayenneRuntimeException constructor
 
 --

http://git-wip-us.apache.org/repos/asf/cayenne/blob/6ea7f395/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
--
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
index 23ba96c..31c6a73 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
@@ -59,7 +59,8 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 String name = rs.getString("PROCEDURE_NAME");
 String key = Procedure.generateFullyQualifiedName(procCatalog, 
procSchema, name);
 Procedure procedure = map.getProcedure(name);
-if (procedure == null) {
+// should be filtered out in getResultSet() method, but check full 
name here too..
+if (procedure == null || 
!key.equals(procedure.getFullyQualifiedName())) {
 return;
 }
 
@@ -80,7 +81,7 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 return null;
 }
 
-if (columnName == null) {
+if (columnName == null || columnName.isEmpty()) {
 if (type == DatabaseMetaData.procedureColumnReturn) {
 LOGGER.debug("null column name, assuming result column: " + 
key);
 columnName = "_return_value";
@@ -103,7 +104,10 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 }
 
 ProcedureParameter column = new ProcedureParameter(columnName);
-column.setDirection(getDirection(type));
+int direction = getDirection(type);
+if(direction != -1) {
+column.setDirection(direction);
+}
 column.setType(columnType);
 column.setMaxLength(rs.getInt("LENGTH"));
 column.setPrecision(decimalDigits);
@@ -120,6 +124,8 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 return ProcedureParameter.IN_OUT_PARAMETER;
 case DatabaseMetaData.procedureColumnOut:
 return ProcedureParameter.OUT_PARAMETER;
+case DatabaseMetaData.procedureColumnReturn:
+return ProcedureParameter.OUT_PARAMETER;
 default:
 return -1;
 }



cayenne git commit: CAY-2435 cdbimport: procedure parameters are not imported

2018-05-23 Thread ntimofeev
Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 4944e863d -> 21732820a


CAY-2435 cdbimport: procedure parameters are not imported


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/21732820
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/21732820
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/21732820

Branch: refs/heads/STABLE-4.0
Commit: 21732820a38c9d8c32b0b311b8edf53a320d91ff
Parents: 4944e86
Author: Nikita Timofeev 
Authored: Wed May 23 12:19:39 2018 +0300
Committer: Nikita Timofeev 
Committed: Wed May 23 12:19:39 2018 +0300

--
 RELEASE-NOTES.txt |  1 +
 .../dbsync/reverse/dbload/ProcedureColumnLoader.java  | 14 ++
 2 files changed, 11 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cayenne/blob/21732820/RELEASE-NOTES.txt
--
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index c09f88b..6bdc143 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -16,6 +16,7 @@ Changes/New Features:
 
 Bug Fixes:
 
+CAY-2435 cdbimport: procedure parameters are not imported
 CAY-2436 NPE in CayenneRuntimeException constructor
 
 --

http://git-wip-us.apache.org/repos/asf/cayenne/blob/21732820/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
--
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
index f4096a1..31c6a73 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
@@ -58,8 +58,9 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 String procCatalog = rs.getString("PROCEDURE_CAT");
 String name = rs.getString("PROCEDURE_NAME");
 String key = Procedure.generateFullyQualifiedName(procCatalog, 
procSchema, name);
-Procedure procedure = map.getProcedure(key);
-if (procedure == null) {
+Procedure procedure = map.getProcedure(name);
+// should be filtered out in getResultSet() method, but check full 
name here too..
+if (procedure == null || 
!key.equals(procedure.getFullyQualifiedName())) {
 return;
 }
 
@@ -80,7 +81,7 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 return null;
 }
 
-if (columnName == null) {
+if (columnName == null || columnName.isEmpty()) {
 if (type == DatabaseMetaData.procedureColumnReturn) {
 LOGGER.debug("null column name, assuming result column: " + 
key);
 columnName = "_return_value";
@@ -103,7 +104,10 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 }
 
 ProcedureParameter column = new ProcedureParameter(columnName);
-column.setDirection(getDirection(type));
+int direction = getDirection(type);
+if(direction != -1) {
+column.setDirection(direction);
+}
 column.setType(columnType);
 column.setMaxLength(rs.getInt("LENGTH"));
 column.setPrecision(decimalDigits);
@@ -120,6 +124,8 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
 return ProcedureParameter.IN_OUT_PARAMETER;
 case DatabaseMetaData.procedureColumnOut:
 return ProcedureParameter.OUT_PARAMETER;
+case DatabaseMetaData.procedureColumnReturn:
+return ProcedureParameter.OUT_PARAMETER;
 default:
 return -1;
 }



[jira] [Closed] (CAY-2436) NPE in CayenneRuntimeException constructor

2018-05-23 Thread Nikita Timofeev (JIRA)

 [ 
https://issues.apache.org/jira/browse/CAY-2436?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikita Timofeev closed CAY-2436.

Resolution: Fixed

*4.1*: 
[https://github.com/apache/cayenne/commit/872f231a1984033771867628b1e4f660dfec2b28]

*4.0*: 
https://github.com/apache/cayenne/commit/4944e863d6d31e2d96a592c4cf4fefbb2a2c1b1e

> NPE in CayenneRuntimeException constructor
> --
>
> Key: CAY-2436
> URL: https://issues.apache.org/jira/browse/CAY-2436
> Project: Cayenne
>  Issue Type: Bug
>  Components: Core Library
>Affects Versions: 4.1.M1, 4.0.RC1
>Reporter: Nikita Timofeev
>Assignee: Nikita Timofeev
>Priority: Major
> Fix For: 4.0.RC2, 4.1.M2
>
>
> {code}
> java.lang.NullPointerException
>  at java.base/java.util.regex.Matcher.getTextLength(Unknown Source)
>  at java.base/java.util.regex.Matcher.reset(Unknown Source)
>  at java.base/java.util.regex.Matcher.(Unknown Source)
>  at java.base/java.util.regex.Pattern.matcher(Unknown Source)
>  at java.base/java.util.Formatter.parse(Unknown Source)
>  at java.base/java.util.Formatter.format(Unknown Source)
>  at java.base/java.util.Formatter.format(Unknown Source)
>  at java.base/java.lang.String.format(Unknown Source)
>  at 
> org.apache.cayenne.CayenneRuntimeException.(CayenneRuntimeException.java:58)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[1/2] cayenne git commit: CAY-2436 NPE in CayenneRuntimeException constructor

2018-05-23 Thread ntimofeev
Repository: cayenne
Updated Branches:
  refs/heads/master 57361b635 -> 26dc6a268


CAY-2436 NPE in CayenneRuntimeException constructor


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/872f231a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/872f231a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/872f231a

Branch: refs/heads/master
Commit: 872f231a1984033771867628b1e4f660dfec2b28
Parents: 57361b6
Author: Nikita Timofeev 
Authored: Wed May 23 10:14:23 2018 +0300
Committer: Nikita Timofeev 
Committed: Wed May 23 10:17:32 2018 +0300

--
 RELEASE-NOTES.txt   |  1 +
 .../apache/cayenne/CayenneRuntimeException.java |  2 +-
 .../cayenne/CayenneRuntimeExceptionTest.java| 33 ++--
 3 files changed, 25 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cayenne/blob/872f231a/RELEASE-NOTES.txt
--
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 1df3b48..3806615 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -59,6 +59,7 @@ CAY-2425 Modeler: Migrate DB Direction field is locked if no 
option was selected
 CAY-2427 Modeler: Undo throws exception
 CAY-2429 Generate classes: Invalid template type: EMBEDDABLE_SINGLE_CLASS
 CAY-2430 Modeler: Redo throws NPE
+CAY-2436 NPE in CayenneRuntimeException constructor
 
 --
 Release: 4.1.M1

http://git-wip-us.apache.org/repos/asf/cayenne/blob/872f231a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
--
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java 
b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
index bb922bc..135b50c 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
@@ -37,7 +37,7 @@ public class CayenneRuntimeException extends RuntimeException 
{
  * conventions.
  */
 public CayenneRuntimeException(String messageFormat, Object... 
messageArgs) {
-super(String.format(messageFormat, messageArgs));
+super(messageFormat == null ? null : String.format(messageFormat, 
messageArgs));
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/872f231a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
--
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
index d9019c2..0e60ecf 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
@@ -29,26 +29,24 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-/**
- */
 public class CayenneRuntimeExceptionTest {
 
 @Test
-public void testConstructor1() throws Exception {
+public void testConstructor1() {
 CayenneRuntimeException ex = new CayenneRuntimeException();
 assertNull(ex.getCause());
 
assertTrue(ex.getMessage().startsWith(CayenneException.getExceptionLabel()));
 }
 
 @Test
-public void testConstructor2() throws Exception {
+public void testConstructor2() {
 CayenneRuntimeException ex = new CayenneRuntimeException("abc");
 assertNull(ex.getCause());
 assertEquals(CayenneException.getExceptionLabel() + "abc", 
ex.getMessage());
 }
 
 @Test
-public void testConstructor3() throws Exception {
+public void testConstructor3() {
 Throwable cause = new Throwable();
 CayenneRuntimeException ex = new CayenneRuntimeException(cause);
 assertSame(cause, ex.getCause());
@@ -58,7 +56,7 @@ public class CayenneRuntimeExceptionTest {
 }
 
 @Test
-public void testConstructor4() throws Exception {
+public void testConstructor4() {
 Throwable cause = new Throwable();
 CayenneRuntimeException ex = new CayenneRuntimeException("abc", cause);
 assertSame(cause, ex.getCause());
@@ -66,7 +64,22 @@ public class CayenneRuntimeExceptionTest {
 }
 
 @Test
-public void testThrow1() throws Exception {
+public void testConstructorNullMessage() {
+Throwable cause = new Throwable();
+
+CayenneRuntimeException ex = new CayenneRuntimeException(null, cause);
+

[2/2] cayenne git commit: 4.1.M1 release date

2018-05-23 Thread ntimofeev
4.1.M1 release date


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/26dc6a26
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/26dc6a26
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/26dc6a26

Branch: refs/heads/master
Commit: 26dc6a268f64dc8f6c4c700a0dabbf09c877b93f
Parents: 872f231
Author: Nikita Timofeev 
Authored: Wed May 23 10:18:00 2018 +0300
Committer: Nikita Timofeev 
Committed: Wed May 23 10:18:00 2018 +0300

--
 RELEASE-NOTES.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cayenne/blob/26dc6a26/RELEASE-NOTES.txt
--
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 3806615..2923e0b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -63,7 +63,7 @@ CAY-2436 NPE in CayenneRuntimeException constructor
 
 --
 Release: 4.1.M1
-Date:
+Date: October 14, 2017
 --
 Changes/New Features:
 



cayenne git commit: CAY-2436 NPE in CayenneRuntimeException constructor

2018-05-23 Thread ntimofeev
Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 8a2b5a88c -> 4944e863d


CAY-2436 NPE in CayenneRuntimeException constructor


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/4944e863
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/4944e863
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/4944e863

Branch: refs/heads/STABLE-4.0
Commit: 4944e863d6d31e2d96a592c4cf4fefbb2a2c1b1e
Parents: 8a2b5a8
Author: Nikita Timofeev 
Authored: Wed May 23 10:14:23 2018 +0300
Committer: Nikita Timofeev 
Committed: Wed May 23 10:14:23 2018 +0300

--
 RELEASE-NOTES.txt   |  4 ++-
 .../apache/cayenne/CayenneRuntimeException.java |  7 ++---
 .../cayenne/CayenneRuntimeExceptionTest.java| 33 ++--
 3 files changed, 29 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/RELEASE-NOTES.txt
--
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 828731c..c09f88b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -16,9 +16,11 @@ Changes/New Features:
 
 Bug Fixes:
 
+CAY-2436 NPE in CayenneRuntimeException constructor
+
 --
 Release: 4.0.RC1
-Date:
+Date: April 25, 2018
 --
 
 Changes/New Features:

http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
--
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java 
b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
index 29fc6c0..135b50c 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/CayenneRuntimeException.java
@@ -37,7 +37,7 @@ public class CayenneRuntimeException extends RuntimeException 
{
  * conventions.
  */
 public CayenneRuntimeException(String messageFormat, Object... 
messageArgs) {
-super(String.format(messageFormat, messageArgs));
+super(messageFormat == null ? null : String.format(messageFormat, 
messageArgs));
 }
 
 /**
@@ -53,9 +53,8 @@ public class CayenneRuntimeException extends RuntimeException 
{
  * optional list of message formatting arguments. Message formatting rules 
follow
  * "String.format(..)" conventions.
  */
-public CayenneRuntimeException(String messageFormat, Throwable cause,
-Object... messageArgs) {
-super(String.format(messageFormat, messageArgs), cause);
+public CayenneRuntimeException(String messageFormat, Throwable cause, 
Object... messageArgs) {
+super(messageFormat == null ? null : String.format(messageFormat, 
messageArgs), cause);
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/4944e863/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
--
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
index d9019c2..0e60ecf 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/CayenneRuntimeExceptionTest.java
@@ -29,26 +29,24 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
-/**
- */
 public class CayenneRuntimeExceptionTest {
 
 @Test
-public void testConstructor1() throws Exception {
+public void testConstructor1() {
 CayenneRuntimeException ex = new CayenneRuntimeException();
 assertNull(ex.getCause());
 
assertTrue(ex.getMessage().startsWith(CayenneException.getExceptionLabel()));
 }
 
 @Test
-public void testConstructor2() throws Exception {
+public void testConstructor2() {
 CayenneRuntimeException ex = new CayenneRuntimeException("abc");
 assertNull(ex.getCause());
 assertEquals(CayenneException.getExceptionLabel() + "abc", 
ex.getMessage());
 }
 
 @Test
-public void testConstructor3() throws Exception {
+public void testConstructor3() {
 Throwable cause = new Throwable();
 CayenneRuntimeException ex = new CayenneRuntimeException(cause);
 assertSame(cause, ex.getCause());
@@ -58,7 +56,7 @@ public class CayenneRuntimeExceptionTest {
 }
 
 @Test
-public void testConstructor4() throws Exception {
+

[jira] [Created] (CAY-2436) NPE in CayenneRuntimeException constructor

2018-05-23 Thread Nikita Timofeev (JIRA)
Nikita Timofeev created CAY-2436:


 Summary: NPE in CayenneRuntimeException constructor
 Key: CAY-2436
 URL: https://issues.apache.org/jira/browse/CAY-2436
 Project: Cayenne
  Issue Type: Bug
  Components: Core Library
Affects Versions: 4.0.RC1, 4.1.M1
Reporter: Nikita Timofeev
Assignee: Nikita Timofeev
 Fix For: 4.0.RC2, 4.1.M2


{code}
java.lang.NullPointerException
 at java.base/java.util.regex.Matcher.getTextLength(Unknown Source)
 at java.base/java.util.regex.Matcher.reset(Unknown Source)
 at java.base/java.util.regex.Matcher.(Unknown Source)
 at java.base/java.util.regex.Pattern.matcher(Unknown Source)
 at java.base/java.util.Formatter.parse(Unknown Source)
 at java.base/java.util.Formatter.format(Unknown Source)
 at java.base/java.util.Formatter.format(Unknown Source)
 at java.base/java.lang.String.format(Unknown Source)
 at 
org.apache.cayenne.CayenneRuntimeException.(CayenneRuntimeException.java:58)
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)