diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/BaseSQLTreeProcessor.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/BaseSQLTreeProcessor.java index 5491b4845a..f21a98415e 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/BaseSQLTreeProcessor.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/BaseSQLTreeProcessor.java @@ -34,7 +34,7 @@ /** * @since 4.2 */ -public class BaseSQLTreeProcessor extends SimpleNodeTreeVisitor implements SQLTreeProcessor { +public class BaseSQLTreeProcessor extends TypeAwareSQLTreeProcessor implements SQLTreeProcessor { @Override public Node process(Node node) { 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 ccb93e72de..fb1fe12084 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 @@ -35,12 +35,7 @@ import org.apache.cayenne.access.sqlbuilder.sqltree.SQLTreeProcessor; import org.apache.cayenne.access.translator.ParameterBinding; import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory; -import org.apache.cayenne.access.types.ByteType; -import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.access.types.ExtendedTypeFactory; -import org.apache.cayenne.access.types.ExtendedTypeMap; -import org.apache.cayenne.access.types.ShortType; -import org.apache.cayenne.access.types.ValueObjectTypeRegistry; +import org.apache.cayenne.access.types.*; import org.apache.cayenne.configuration.Constants; import org.apache.cayenne.configuration.RuntimeProperties; import org.apache.cayenne.dba.JdbcAdapter; @@ -200,7 +195,8 @@ protected void configureExtendedTypes(ExtendedTypeMap map) { super.configureExtendedTypes(map); // create specially configured CharType handler - map.registerType(new OracleCharType()); + CharType charType = new OracleCharType(); + map.registerType(charType); // create specially configured ByteArrayType handler map.registerType(new OracleByteArrayType()); @@ -212,6 +208,7 @@ protected void configureExtendedTypes(ExtendedTypeMap map) { map.registerType(new ShortType(true)); map.registerType(new ByteType(true)); map.registerType(new OracleBooleanType()); + map.registerType(new JsonType(charType, true)); } /** diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTreeProcessor.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTreeProcessor.java index 6a3401d25d..816c0bdd98 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTreeProcessor.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSQLTreeProcessor.java @@ -25,17 +25,7 @@ import org.apache.cayenne.access.sqlbuilder.ExpressionNodeBuilder; import org.apache.cayenne.access.sqlbuilder.QuotingAppendable; import org.apache.cayenne.access.sqlbuilder.SelectBuilder; -import org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.EmptyNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.FunctionNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.InNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.LimitOffsetNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.Node; -import org.apache.cayenne.access.sqlbuilder.sqltree.NodeType; -import org.apache.cayenne.access.sqlbuilder.sqltree.OpExpressionNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.TextNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.ValueNode; -import org.apache.cayenne.access.sqlbuilder.sqltree.TrimmingColumnNode; +import org.apache.cayenne.access.sqlbuilder.sqltree.*; import org.apache.cayenne.access.translator.select.BaseSQLTreeProcessor; import org.apache.cayenne.util.ArrayUtil; diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java index 303381f8a7..b0bc59c940 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java @@ -26,14 +26,7 @@ import org.apache.cayenne.access.sqlbuilder.sqltree.SQLTreeProcessor; import org.apache.cayenne.access.translator.ParameterBinding; import org.apache.cayenne.access.translator.ejbql.EJBQLTranslatorFactory; -import org.apache.cayenne.access.types.ByteArrayType; -import org.apache.cayenne.access.types.ByteType; -import org.apache.cayenne.access.types.CharType; -import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.access.types.ExtendedTypeFactory; -import org.apache.cayenne.access.types.ExtendedTypeMap; -import org.apache.cayenne.access.types.ShortType; -import org.apache.cayenne.access.types.ValueObjectTypeRegistry; +import org.apache.cayenne.access.types.*; import org.apache.cayenne.configuration.Constants; import org.apache.cayenne.configuration.RuntimeProperties; import org.apache.cayenne.dba.DefaultQuotingStrategy; @@ -100,7 +93,8 @@ protected void configureExtendedTypes(ExtendedTypeMap map) { super.configureExtendedTypes(map); // create specially configured CharType handler - map.registerType(new CharType(true, false)); + CharType charType = new CharType(true, false); + map.registerType(charType); // create specially configured ByteArrayType handler map.registerType(new ByteArrayType(true, false)); @@ -109,6 +103,7 @@ protected void configureExtendedTypes(ExtendedTypeMap map) { // java.lang.Byte map.registerType(new ShortType(true)); map.registerType(new ByteType(true)); + map.registerType(new JsonType(charType, true)); } /**