You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2017/01/24 13:23:11 UTC
[7/7] cayenne git commit: CAY-2050 Refactoring: ParameterBinding to
contain ExtendedType property
CAY-2050 Refactoring: ParameterBinding to contain ExtendedType property
* do not enclose NULL in quotation marks, as it will make it indistinguishable for a a String "null"
* refactoring
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/27849ce5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/27849ce5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/27849ce5
Branch: refs/heads/master
Commit: 27849ce595b291989aa830fdbb8f0f77923d71e8
Parents: 0161822
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Tue Jan 24 15:08:03 2017 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Tue Jan 24 16:22:52 2017 +0300
----------------------------------------------------------------------
.../java8/access/types/LocalDateTimeType.java | 6 ++--
.../java8/access/types/LocalDateType.java | 6 ++--
.../java8/access/types/LocalTimeType.java | 6 ++--
.../cayenne/joda/access/types/DateTimeType.java | 8 ++---
.../joda/access/types/LocalDateTimeType.java | 8 ++---
.../joda/access/types/LocalDateType.java | 8 ++---
.../joda/access/types/LocalTimeType.java | 12 +++----
.../cayenne/access/types/BigDecimalType.java | 2 +-
.../cayenne/access/types/BigIntegerType.java | 6 ++--
.../cayenne/access/types/BooleanType.java | 2 +-
.../cayenne/access/types/ByteArrayType.java | 36 ++++++++++++++++----
.../access/types/ByteOrCharArrayFactory.java | 10 +++---
.../apache/cayenne/access/types/ByteType.java | 6 ++--
.../cayenne/access/types/CalendarType.java | 8 ++---
.../apache/cayenne/access/types/CharType.java | 12 ++++---
.../apache/cayenne/access/types/DateType.java | 2 +-
.../apache/cayenne/access/types/DoubleType.java | 2 +-
.../apache/cayenne/access/types/EnumType.java | 21 ++++++------
.../cayenne/access/types/ExtendedEnumType.java | 2 +-
.../cayenne/access/types/ExtendedType.java | 20 +++++++----
.../access/types/ExtendedTypeDecorator.java | 2 +-
.../apache/cayenne/access/types/FloatType.java | 2 +-
.../cayenne/access/types/IntegerType.java | 2 +-
.../apache/cayenne/access/types/LongType.java | 2 +-
.../apache/cayenne/access/types/ObjectType.java | 2 +-
.../apache/cayenne/access/types/ShortType.java | 2 +-
.../apache/cayenne/access/types/TimeType.java | 2 +-
.../cayenne/access/types/TimestampType.java | 2 +-
.../apache/cayenne/access/types/UUIDType.java | 6 ++--
.../cayenne/access/types/UtilDateType.java | 6 ++--
.../apache/cayenne/access/types/VoidType.java | 2 +-
.../cayenne/dba/oracle/OracleAdapter.java | 22 ++++++------
.../dba/sqlite/SQLiteBigDecimalType.java | 6 ++--
.../cayenne/dba/sqlite/SQLiteByteArrayType.java | 10 +++---
.../cayenne/dba/sqlite/SQLiteCalendarType.java | 8 ++---
.../cayenne/dba/sqlite/SQLiteFloatType.java | 6 ++--
.../cayenne/log/CommonsJdbcEventLogger.java | 29 +++++++++++-----
.../java/org/apache/cayenne/util/IDUtil.java | 34 ++----------------
.../cayenne/access/types/MockExtendedType.java | 2 +-
.../extended_type/StringET1ExtendedType.java | 6 ++--
.../cayenne/unit/jira/CAY_207StringType1.java | 6 ++--
.../cayenne/unit/jira/CAY_207StringType2.java | 6 ++--
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
43 files changed, 182 insertions(+), 167 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
index f47e247..6242574 100644
--- a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
+++ b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateTimeType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.java8.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.time.LocalDateTime;
-import org.apache.cayenne.access.types.ExtendedType;
-
public class LocalDateTimeType implements ExtendedType<LocalDateTime> {
@Override
@@ -54,7 +54,7 @@ public class LocalDateTimeType implements ExtendedType<LocalDateTime> {
@Override
public String toString(LocalDateTime value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
index ee602d5..0d0b431 100644
--- a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
+++ b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalDateType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.java8.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.time.LocalDate;
-import org.apache.cayenne.access.types.ExtendedType;
-
public class LocalDateType implements ExtendedType<LocalDate> {
@Override
@@ -54,7 +54,7 @@ public class LocalDateType implements ExtendedType<LocalDate> {
@Override
public String toString(LocalDate value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
index f1a8dea..1b0afb4 100644
--- a/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
+++ b/cayenne-java8/src/main/java/org/apache/cayenne/java8/access/types/LocalTimeType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.java8.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Time;
import java.time.LocalTime;
-import org.apache.cayenne.access.types.ExtendedType;
-
public class LocalTimeType implements ExtendedType<LocalTime> {
@Override
@@ -54,7 +54,7 @@ public class LocalTimeType implements ExtendedType<LocalTime> {
@Override
public String toString(LocalTime value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/DateTimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/DateTimeType.java b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/DateTimeType.java
index a042b3d..5b8bb63 100644
--- a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/DateTimeType.java
+++ b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/DateTimeType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.joda.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+import org.joda.time.DateTime;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.joda.time.DateTime;
-
/**
* Handles <code>org.joda.time.DateTime</code> type mapping.
*
@@ -70,7 +70,7 @@ public class DateTimeType implements ExtendedType<DateTime> {
@Override
public String toString(DateTime value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateTimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateTimeType.java b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateTimeType.java
index 97d3900..e12ab04 100644
--- a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateTimeType.java
+++ b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateTimeType.java
@@ -19,15 +19,15 @@
package org.apache.cayenne.joda.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+import org.joda.time.LocalDateTime;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.sql.Types;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.joda.time.LocalDateTime;
-
/**
* Handles <code>org.joda.time.LocalDateTime</code> type mapping.
*
@@ -71,7 +71,7 @@ public class LocalDateTimeType implements ExtendedType<LocalDateTime> {
@Override
public String toString(LocalDateTime value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateType.java
----------------------------------------------------------------------
diff --git a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateType.java b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateType.java
index 19f05b6..c59a371 100644
--- a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateType.java
+++ b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalDateType.java
@@ -19,6 +19,9 @@
package org.apache.cayenne.joda.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+import org.joda.time.LocalDate;
+
import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.PreparedStatement;
@@ -26,9 +29,6 @@ import java.sql.ResultSet;
import java.sql.Timestamp;
import java.sql.Types;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.joda.time.LocalDate;
-
/**
* Handles <code>org.joda.time.LocalDate</code> type mapping.
*
@@ -81,7 +81,7 @@ public class LocalDateType implements ExtendedType<LocalDate> {
@Override
public String toString(LocalDate value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalTimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalTimeType.java b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalTimeType.java
index 501f889..87d4fca 100644
--- a/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalTimeType.java
+++ b/cayenne-joda/src/main/java/org/apache/cayenne/joda/access/types/LocalTimeType.java
@@ -19,6 +19,11 @@
package org.apache.cayenne.joda.access.types;
+import org.apache.cayenne.access.types.ExtendedType;
+import org.joda.time.DateTimeZone;
+import org.joda.time.LocalDate;
+import org.joda.time.LocalTime;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -26,11 +31,6 @@ import java.sql.Time;
import java.sql.Timestamp;
import java.sql.Types;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.joda.time.DateTimeZone;
-import org.joda.time.LocalDate;
-import org.joda.time.LocalTime;
-
/**
* Handles <code>org.joda.time.LocalTime</code> type mapping.
*
@@ -86,7 +86,7 @@ public class LocalTimeType implements ExtendedType<LocalTime> {
@Override
public String toString(LocalTime value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigDecimalType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigDecimalType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigDecimalType.java
index 11e9860..626e794 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigDecimalType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigDecimalType.java
@@ -63,7 +63,7 @@ public class BigDecimalType implements ExtendedType<BigDecimal> {
@Override
public String toString(BigDecimal value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigIntegerType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigIntegerType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigIntegerType.java
index a3d1752..f6c10b1 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigIntegerType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BigIntegerType.java
@@ -18,13 +18,13 @@
****************************************************************/
package org.apache.cayenne.access.types;
+import org.apache.cayenne.dba.TypesMapping;
+
import java.math.BigInteger;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.dba.TypesMapping;
-
/**
* @since 3.0
*/
@@ -80,7 +80,7 @@ public class BigIntegerType implements ExtendedType<BigInteger> {
@Override
public String toString(BigInteger value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/BooleanType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BooleanType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BooleanType.java
index be0d597..8de103d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/BooleanType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/BooleanType.java
@@ -75,7 +75,7 @@ public class BooleanType implements ExtendedType<Boolean> {
@Override
public String toString(Boolean value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteArrayType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteArrayType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteArrayType.java
index 3ad6898..21fc5b7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteArrayType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteArrayType.java
@@ -19,6 +19,10 @@
package org.apache.cayenne.access.types;
+import org.apache.cayenne.CayenneException;
+import org.apache.cayenne.util.IDUtil;
+import org.apache.cayenne.util.MemoryBlob;
+
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -29,10 +33,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
-import org.apache.cayenne.CayenneException;
-import org.apache.cayenne.util.IDUtil;
-import org.apache.cayenne.util.MemoryBlob;
-
/**
* Handles <code>byte[]</code>, mapping it as either of JDBC types - BLOB or
* (VAR)BINARY. Can be configured to trim trailing zero bytes.
@@ -44,6 +44,30 @@ public class ByteArrayType implements ExtendedType<byte[]> {
protected boolean trimmingBytes;
protected boolean usingBlobs;
+ public static void logBytes(StringBuilder buffer, byte[] bytes) {
+ buffer.append("< ");
+
+ int len = bytes.length;
+ boolean trimming = false;
+ if (len > TRIM_VALUES_THRESHOLD) {
+ len = TRIM_VALUES_THRESHOLD;
+ trimming = true;
+ }
+
+ for (int i = 0; i < len; i++) {
+ if (i > 0) {
+ buffer.append(",");
+ }
+ IDUtil.appendFormattedByte(buffer, bytes[i]);
+ }
+
+ if (trimming) {
+ buffer.append("...");
+ }
+
+ buffer.append('>');
+ }
+
/**
* Strips null bytes from the byte array, returning a potentially smaller
* array that contains no trailing zero bytes.
@@ -141,11 +165,11 @@ public class ByteArrayType implements ExtendedType<byte[]> {
@Override
public String toString(byte[] value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
- IDUtil.appendFormattedBytes(buffer, value);
+ logBytes(buffer, value);
return buffer.toString();
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteOrCharArrayFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteOrCharArrayFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteOrCharArrayFactory.java
index 8db28ce..2b1b83f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteOrCharArrayFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteOrCharArrayFactory.java
@@ -18,11 +18,9 @@
****************************************************************/
package org.apache.cayenne.access.types;
-import java.lang.reflect.Array;
-
import org.apache.cayenne.util.IDUtil;
-import static org.apache.cayenne.log.CommonsJdbcEventLogger.TRIM_VALUES_THRESHOLD;
+import java.lang.reflect.Array;
/**
* A factory that dynamically creates ExtendedTypes for Character, Character[], Byte[] and
@@ -123,7 +121,7 @@ class ByteOrCharArrayFactory implements ExtendedTypeFactory {
@Override
public String toString(char[] value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
@@ -194,7 +192,7 @@ class ByteOrCharArrayFactory implements ExtendedTypeFactory {
@Override
public String toString(Character[] value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
@@ -265,7 +263,7 @@ class ByteOrCharArrayFactory implements ExtendedTypeFactory {
@Override
public String toString(Byte[] value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteType.java
index c11191d..b363bbf 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ByteType.java
@@ -19,12 +19,12 @@
package org.apache.cayenne.access.types;
+import org.apache.cayenne.util.IDUtil;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.util.IDUtil;
-
/**
* Handles <code>java.lang.Byte</code> type mapping. Can be configured to recast
* java.lang.Byte to java.lang.Integer when binding values to PreparedStatement. This is a
@@ -83,7 +83,7 @@ public class ByteType implements ExtendedType<Byte> {
@Override
public String toString(Byte value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java
index acc53b2..0b60548 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CalendarType.java
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.cayenne.access.types;
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.dba.TypesMapping;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -26,9 +29,6 @@ import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.dba.TypesMapping;
-
/**
* ExtendedType that handles {@link java.util.Calendar} fields.
*
@@ -172,7 +172,7 @@ public class CalendarType<T extends Calendar> implements ExtendedType<Calendar>
@Override
public String toString(Calendar value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.getClass().getName() + '(' + new java.sql.Timestamp(value.getTimeInMillis()) + ')';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/CharType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CharType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CharType.java
index 5da2bae..cf807a9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/CharType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/CharType.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.access.types;
+import org.apache.cayenne.CayenneException;
+
import java.io.IOException;
import java.io.Reader;
import java.io.StringWriter;
@@ -29,8 +31,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
-import org.apache.cayenne.CayenneException;
-
/**
* Handles <code>java.lang.String</code>, mapping it as either of JDBC types -
* CLOB or (VAR)CHAR. Can be configured to trim trailing spaces.
@@ -117,18 +117,19 @@ public class CharType implements ExtendedType<String> {
@Override
public String toString(String value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
buffer.append('\'');
- // lets escape quotes
+
String literal = value;
if (literal.length() > TRIM_VALUES_THRESHOLD) {
literal = literal.substring(0, TRIM_VALUES_THRESHOLD) + "...";
}
+ // escape quotes
int curPos = 0;
int endPos = 0;
@@ -137,8 +138,9 @@ public class CharType implements ExtendedType<String> {
curPos = endPos + 1;
}
- if (curPos < literal.length())
+ if (curPos < literal.length()) {
buffer.append(literal.substring(curPos));
+ }
buffer.append('\'');
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/DateType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/DateType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/DateType.java
index 0e158fc..654e1fe 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/DateType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/DateType.java
@@ -63,7 +63,7 @@ public class DateType implements ExtendedType<Date> {
@Override
public String toString(Date value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/DoubleType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/DoubleType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/DoubleType.java
index 66186c6..cfdd91f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/DoubleType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/DoubleType.java
@@ -64,7 +64,7 @@ public class DoubleType implements ExtendedType<Double> {
@Override
public String toString(Double value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/EnumType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/EnumType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/EnumType.java
index e1af1db..f8c4192 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/EnumType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/EnumType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.access.types;
+import org.apache.cayenne.ExtendedEnumeration;
+import org.apache.cayenne.dba.TypesMapping;
+
import java.lang.reflect.Method;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.ExtendedEnumeration;
-import org.apache.cayenne.dba.TypesMapping;
-
/**
* An ExtendedType that handles an enum class. If Enum is mapped to a character column,
* its name is used as persistent value; if it is mapped to a numeric column, its ordinal
@@ -116,22 +116,21 @@ public class EnumType<T extends Enum<T>> implements ExtendedType<T> {
@Override
public String toString(T value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
- // buffer.append(object.getClass().getName()).append(".");
- buffer.append(value.name()).append("=");
+ buffer.append(value.name());
if (value instanceof ExtendedEnumeration) {
+ buffer.append("=");
Object dbValue = ((ExtendedEnumeration) value).getDatabaseValue();
- if (dbValue instanceof String)
+ if (dbValue instanceof String) {
buffer.append("'");
+ }
buffer.append(value);
- if (dbValue instanceof String)
+ if (dbValue instanceof String) {
buffer.append("'");
- } else {
- buffer.append((value).ordinal());
- // FIXME -- this isn't quite right
+ }
}
return buffer.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
index 50dc48c..3ac8dc9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
@@ -159,7 +159,7 @@ public class ExtendedEnumType<T extends Enum<T>> implements ExtendedType<T> {
@Override
public String toString(T value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedType.java
index 0836290..b30f674 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedType.java
@@ -24,11 +24,16 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
- * Defines methods to read Java objects from JDBC ResultSets and write as parameters of
- * PreparedStatements.
+ * Defines methods to read Java objects from JDBC ResultSets and write as parameters of PreparedStatements.
*/
public interface ExtendedType<T> {
+
+ /**
+ * Defines trimming constant for toString method that helps to limit logging of large values.
+ */
+ int TRIM_VALUES_THRESHOLD = 30;
+
/**
* Returns a full name of Java class that this ExtendedType supports.
*/
@@ -47,23 +52,26 @@ public interface ExtendedType<T> {
/**
* Reads an object from JDBC ResultSet column, converting it to class returned by
* 'getClassName' method.
- *
+ *
* @throws Exception if read error occurred, or an object can't be converted to a
- * target Java class.
+ * target Java class.
*/
T materializeObject(ResultSet rs, int index, int type) throws Exception;
/**
* Reads an object from a stored procedure OUT parameter, converting it to class
* returned by 'getClassName' method.
- *
+ *
* @throws Exception if read error occurred, or an object can't be converted to a
- * target Java class.
+ * target Java class.
*/
T materializeObject(CallableStatement rs, int index, int type) throws Exception;
/**
+ * Converts value of the supported type to a human-readable String representation.
*
+ * @param value a vlue to convert to String.
+ * @since 4.0
*/
String toString(T value);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedTypeDecorator.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedTypeDecorator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedTypeDecorator.java
index 970aaa1..388b8e0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedTypeDecorator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ExtendedTypeDecorator.java
@@ -66,7 +66,7 @@ abstract class ExtendedTypeDecorator<T, E> implements ExtendedType<T> {
@Override
public String toString(T value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/FloatType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/FloatType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/FloatType.java
index 822e9df..51713db 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/FloatType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/FloatType.java
@@ -64,7 +64,7 @@ public class FloatType implements ExtendedType<Float> {
@Override
public String toString(Float value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/IntegerType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/IntegerType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/IntegerType.java
index 64ee766..0d2ec62 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/IntegerType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/IntegerType.java
@@ -64,7 +64,7 @@ public class IntegerType implements ExtendedType<Integer> {
@Override
public String toString(Integer value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/LongType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/LongType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/LongType.java
index decab14..287190e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/LongType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/LongType.java
@@ -64,7 +64,7 @@ public class LongType implements ExtendedType<Long> {
@Override
public String toString(Long value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ObjectType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ObjectType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ObjectType.java
index 6fb2d3e..2473177 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ObjectType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ObjectType.java
@@ -63,7 +63,7 @@ public class ObjectType implements ExtendedType<Object> {
@Override
public String toString(Object value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/ShortType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ShortType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ShortType.java
index 72ed935..257f7cc 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/ShortType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/ShortType.java
@@ -82,7 +82,7 @@ public class ShortType implements ExtendedType<Short> {
@Override
public String toString(Short value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimeType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimeType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimeType.java
index 3026954..8966f82 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimeType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimeType.java
@@ -63,7 +63,7 @@ public class TimeType implements ExtendedType<Time> {
@Override
public String toString(Time value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimestampType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimestampType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimestampType.java
index 8b877a0..d6b6aca 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimestampType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/TimestampType.java
@@ -63,7 +63,7 @@ public class TimestampType implements ExtendedType<Timestamp> {
@Override
public String toString(Timestamp value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/UUIDType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/UUIDType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/UUIDType.java
index 8ff5eae..fd700ea 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/UUIDType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/UUIDType.java
@@ -18,13 +18,13 @@
****************************************************************/
package org.apache.cayenne.access.types;
+import org.apache.cayenne.CayenneRuntimeException;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.UUID;
-import org.apache.cayenne.CayenneRuntimeException;
-
/**
* An ExtendedType to map Java UUIDs as persistent attributes.
*
@@ -87,7 +87,7 @@ public class UUIDType implements ExtendedType<UUID> {
@Override
public String toString(UUID value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/UtilDateType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/UtilDateType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/UtilDateType.java
index dafd472..9fa5010 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/UtilDateType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/UtilDateType.java
@@ -19,14 +19,14 @@
package org.apache.cayenne.access.types;
+import org.apache.cayenne.dba.TypesMapping;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.Date;
-import org.apache.cayenne.dba.TypesMapping;
-
/**
* Maps <code>java.util.Date</code> to any of the three database date/time types: TIME,
* DATE, TIMESTAMP.
@@ -122,7 +122,7 @@ public class UtilDateType implements ExtendedType<Date> {
@Override
public String toString(Date value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
long time = value.getTime();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/access/types/VoidType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/types/VoidType.java b/cayenne-server/src/main/java/org/apache/cayenne/access/types/VoidType.java
index 52ff9fb..d842d96 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/types/VoidType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/types/VoidType.java
@@ -60,7 +60,7 @@ public class VoidType implements ExtendedType<Void> {
@Override
public String toString(Void value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return null;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
----------------------------------------------------------------------
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 c0ac4f0..00ff222 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
@@ -19,16 +19,6 @@
package org.apache.cayenne.dba.oracle;
-import java.lang.reflect.Field;
-import java.sql.CallableStatement;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.DataNode;
import org.apache.cayenne.access.translator.ParameterBinding;
@@ -57,6 +47,16 @@ import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.UpdateBatchQuery;
import org.apache.cayenne.resource.ResourceLocator;
+import java.lang.reflect.Field;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
/**
* DbAdapter implementation for <a href="http://www.oracle.com">Oracle RDBMS
* </a>. Sample connection settings to use with Oracle are shown below:
@@ -345,7 +345,7 @@ public class OracleAdapter extends JdbcAdapter {
@Override
public String toString(Boolean value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return '\'' + value.toString() + '\'';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteBigDecimalType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteBigDecimalType.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteBigDecimalType.java
index e834bbc..440d9d8 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteBigDecimalType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteBigDecimalType.java
@@ -18,13 +18,13 @@
****************************************************************/
package org.apache.cayenne.dba.sqlite;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-
/**
* @since 3.0
*/
@@ -73,7 +73,7 @@ class SQLiteBigDecimalType implements ExtendedType<BigDecimal> {
@Override
public String toString(BigDecimal value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteByteArrayType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteByteArrayType.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteByteArrayType.java
index 11526e0..dca1e48 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteByteArrayType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteByteArrayType.java
@@ -18,13 +18,13 @@
****************************************************************/
package org.apache.cayenne.dba.sqlite;
+import org.apache.cayenne.access.types.ByteArrayType;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.util.IDUtil;
-
/**
* @since 3.0
*/
@@ -70,11 +70,11 @@ class SQLiteByteArrayType implements ExtendedType<byte[]> {
@Override
public String toString(byte[] value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
StringBuilder buffer = new StringBuilder();
- IDUtil.appendFormattedBytes(buffer, value);
+ ByteArrayType.logBytes(buffer, value);
return buffer.toString();
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteCalendarType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteCalendarType.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteCalendarType.java
index e099b2b..7749032 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteCalendarType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteCalendarType.java
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.cayenne.dba.sqlite;
+import org.apache.cayenne.access.types.CalendarType;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -25,9 +28,6 @@ import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
-import org.apache.cayenne.access.types.CalendarType;
-import org.apache.cayenne.access.types.ExtendedType;
-
/**
* @since 3.0
*/
@@ -85,7 +85,7 @@ class SQLiteCalendarType<T extends Calendar> implements ExtendedType<Calendar> {
@Override
public String toString(Calendar value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.getClass().getName() + '(' + new java.sql.Timestamp(value.getTimeInMillis()) + ')';
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteFloatType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteFloatType.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteFloatType.java
index c80961a..100dfba 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteFloatType.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteFloatType.java
@@ -18,12 +18,12 @@
****************************************************************/
package org.apache.cayenne.dba.sqlite;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-
/**
* @since 3.0
*/
@@ -70,7 +70,7 @@ class SQLiteFloatType implements ExtendedType<Float> {
@Override
public String toString(Float value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java b/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
index 83994dc..27a9d65 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/log/CommonsJdbcEventLogger.java
@@ -18,11 +18,6 @@
****************************************************************/
package org.apache.cayenne.log;
-import java.lang.reflect.Array;
-import java.sql.SQLException;
-import java.util.Iterator;
-import java.util.List;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ExtendedEnumeration;
import org.apache.cayenne.access.jdbc.SQLParameterBinding;
@@ -37,6 +32,11 @@ import org.apache.cayenne.util.Util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.lang.reflect.Array;
+import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.List;
+
/**
* A {@link JdbcEventLogger} built on top of commons-logging.
*
@@ -46,7 +46,10 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
private static final Log logger = LogFactory.getLog(CommonsJdbcEventLogger.class);
- public static final int TRIM_VALUES_THRESHOLD = 30;
+ /**
+ * @deprecated since 4.0
+ */
+ private static final int TRIM_VALUES_THRESHOLD = 30;
protected long queryExecutionTimeLoggingThreshold;
@@ -55,6 +58,8 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
Constants.QUERY_EXECUTION_TIME_LOGGING_THRESHOLD_PROPERTY, 0);
}
+ // this should go away once we can remove 4.0 deprecated API. The actual logic for printing a value is now
+ // spread around the ExtendedTypes
void sqlLiteralForObject(StringBuilder buffer, Object object) {
if (object == null) {
buffer.append("NULL");
@@ -320,6 +325,9 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
}
}
+ /**
+ * @deprecated since 4.0
+ */
@Deprecated
@Override
public void logQueryParameters(String label, List<DbAttribute> attrs, List<Object> parameters, boolean isInserting) {
@@ -379,8 +387,13 @@ public class CommonsJdbcEventLogger implements JdbcEventLogger {
if (b.getExtendedType() != null) {
buffer.append(b.getExtendedType().toString(b.getValue()));
- } else {
- buffer.append(b.getValue());
+ } else if(b.getValue() == null) {
+ buffer.append("NULL");
+ }
+ else {
+ buffer.append(b.getValue().getClass().getName())
+ .append("@")
+ .append(System.identityHashCode(b.getValue()));
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/main/java/org/apache/cayenne/util/IDUtil.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/util/IDUtil.java b/cayenne-server/src/main/java/org/apache/cayenne/util/IDUtil.java
index 6f4df35..ccda74c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/util/IDUtil.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/util/IDUtil.java
@@ -19,15 +19,13 @@
package org.apache.cayenne.util;
+import org.apache.cayenne.CayenneRuntimeException;
+
import java.io.IOException;
import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import org.apache.cayenne.CayenneRuntimeException;
-
-import static org.apache.cayenne.log.CommonsJdbcEventLogger.TRIM_VALUES_THRESHOLD;
-
/**
* helper class to generate pseudo-GUID sequences.
*
@@ -86,34 +84,6 @@ public class IDUtil {
}
}
- public static void appendFormattedBytes(Appendable buffer, byte[] bytes) {
- try {
- buffer.append("< ");
-
- int len = bytes.length;
- boolean trimming = false;
- if (len > TRIM_VALUES_THRESHOLD) {
- len = TRIM_VALUES_THRESHOLD;
- trimming = true;
- }
-
- for (int i = 0; i < len; i++) {
- if (i > 0) {
- buffer.append(",");
- }
- appendFormattedByte(buffer, bytes[i]);
- }
-
- if (trimming) {
- buffer.append("...");
- }
-
- buffer.append('>');
- } catch (IOException e) {
- throw new CayenneRuntimeException("Error appending data to buffer", e);
- }
- }
-
/**
* @param length the length of returned byte[]
* @return A pseudo-unique byte array of the specified length. Length must be at least
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java b/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
index 0f7a2af..4a81ed7 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/types/MockExtendedType.java
@@ -63,7 +63,7 @@ public class MockExtendedType implements ExtendedType<Object> {
@Override
public String toString(Object value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
index 826c5ea..28cd3db 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/extended_type/StringET1ExtendedType.java
@@ -18,12 +18,12 @@
****************************************************************/
package org.apache.cayenne.testdo.extended_type;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-
public class StringET1ExtendedType implements ExtendedType<StringET1> {
@Override
@@ -63,7 +63,7 @@ public class StringET1ExtendedType implements ExtendedType<StringET1> {
@Override
public String toString(StringET1 value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType1.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType1.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType1.java
index 7c70441..1284e70 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType1.java
@@ -19,12 +19,12 @@
package org.apache.cayenne.unit.jira;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-
public class CAY_207StringType1 implements ExtendedType<CAY_207String1> {
@Override
@@ -62,7 +62,7 @@ public class CAY_207StringType1 implements ExtendedType<CAY_207String1> {
@Override
public String toString(CAY_207String1 value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType2.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType2.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType2.java
index 8483651..0d1a54f 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/jira/CAY_207StringType2.java
@@ -19,12 +19,12 @@
package org.apache.cayenne.unit.jira;
+import org.apache.cayenne.access.types.ExtendedType;
+
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import org.apache.cayenne.access.types.ExtendedType;
-
/**
*/
public class CAY_207StringType2 implements ExtendedType<CAY_207String2> {
@@ -64,7 +64,7 @@ public class CAY_207StringType2 implements ExtendedType<CAY_207String2> {
@Override
public String toString(CAY_207String2 value) {
if (value == null) {
- return "\'null\'";
+ return "NULL";
}
return value.toString();
http://git-wip-us.apache.org/repos/asf/cayenne/blob/27849ce5/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index bdd5abc..9572224 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
Changes/New Features:
CAY-2139 Upgrade HSQLDB dependency to the most recent version (2.3.4)
+CAY-2150 Refactoring: ParameterBinding to contain ExtendedType property
CAY-2163 Property.path() , ExpressionFactory.pathExp()
CAY-2164 Relocate builder bootstrap methods from ServerRuntimeBuilder to ServerRuntime
CAY-2165 Explicit "contribution" API for easier expansion of DI collections and maps