From b0dae02c4282e8f3dd684383ced73789c0d02086 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Thu, 17 Nov 2016 22:59:50 +1300 Subject: [PATCH] #881 - Split DocPropertyType.STRING into KEYWORD and TEXT ... for ElasticSearch 5.x support --- .../ebeaninternal/server/deploy/BeanProperty.java | 15 +++++---------- .../server/type/ScalarTypeArrayList.java | 2 +- .../server/type/ScalarTypeArrayListH2.java | 2 +- .../server/type/ScalarTypeBaseVarchar.java | 2 +- .../server/type/ScalarTypeDuration.java | 2 +- .../server/type/ScalarTypeJodaLocalTime.java | 2 +- .../server/type/ScalarTypeLocalTime.java | 2 +- .../server/type/ScalarTypeMonthDay.java | 2 +- .../server/type/ScalarTypeString.java | 2 +- .../ebeaninternal/server/type/ScalarTypeTime.java | 2 +- .../docstore/api/mapping/DocMappingBuilder.java | 2 +- .../docstore/api/mapping/DocPropertyOptions.java | 8 ++++++++ .../docstore/api/mapping/DocPropertyType.java | 9 +++++++-- 13 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java index ac1619718..332533a25 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanProperty.java @@ -1388,20 +1388,15 @@ public class BeanProperty implements ElPropertyValue, Property { if (mapping.includesProperty(prefix, name)) { DocPropertyType type = scalarType.getDocType(); - DocPropertyOptions options = docOptions.copy(); - if (DocPropertyType.UUID == type || DocPropertyType.ENUM == type || isStringId(type)) { - options.setCode(true); + if (isKeywordType(type, docOptions)) { + type = DocPropertyType.KEYWORD; } - - mapping.add(new DocPropertyMapping(name, type, options)); + mapping.add(new DocPropertyMapping(name, type, docOptions)); } } - /** - * Return true if this is a String Id property and should be treated as a code by the document store. - */ - private boolean isStringId(DocPropertyType type) { - return DocPropertyType.STRING == type && (id || discriminator); + private boolean isKeywordType(DocPropertyType type, DocPropertyOptions docOptions) { + return type == DocPropertyType.TEXT && (docOptions.isCode() || id || discriminator); } public void merge(EntityBean bean, EntityBean existing) { diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayList.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayList.java index 4aa61b15a..ff6a51a53 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayList.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayList.java @@ -25,7 +25,7 @@ public class ScalarTypeArrayList extends ScalarTypeJsonCollection { private static ScalarTypeArrayList LONG = new ScalarTypeArrayList("bigint", DocPropertyType.LONG, ArrayElementConverter.LONG); private static ScalarTypeArrayList INTEGER = new ScalarTypeArrayList("integer", DocPropertyType.INTEGER, ArrayElementConverter.INTEGER); private static ScalarTypeArrayList DOUBLE = new ScalarTypeArrayList("float", DocPropertyType.DOUBLE, ArrayElementConverter.DOUBLE); - private static ScalarTypeArrayList STRING = new ScalarTypeArrayList("varchar", DocPropertyType.STRING, ArrayElementConverter.STRING); + private static ScalarTypeArrayList STRING = new ScalarTypeArrayList("varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING); static PlatformArrayTypeFactory factory() { return new Factory(); diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayListH2.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayListH2.java index b9b4175d8..3c620a369 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayListH2.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeArrayListH2.java @@ -16,7 +16,7 @@ class ScalarTypeArrayListH2 extends ScalarTypeArrayList { private static ScalarTypeArrayListH2 LONG = new ScalarTypeArrayListH2("bigint", DocPropertyType.LONG, ArrayElementConverter.LONG); private static ScalarTypeArrayListH2 INTEGER = new ScalarTypeArrayListH2("integer", DocPropertyType.INTEGER, ArrayElementConverter.INTEGER); private static ScalarTypeArrayListH2 DOUBLE = new ScalarTypeArrayListH2("double", DocPropertyType.DOUBLE, ArrayElementConverter.DOUBLE); - private static ScalarTypeArrayListH2 STRING = new ScalarTypeArrayListH2("varchar", DocPropertyType.STRING, ArrayElementConverter.STRING); + private static ScalarTypeArrayListH2 STRING = new ScalarTypeArrayListH2("varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING); static PlatformArrayTypeFactory factory() { return new ScalarTypeArrayListH2.Factory(); diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeBaseVarchar.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeBaseVarchar.java index bc6c6817a..fabc01fe2 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeBaseVarchar.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeBaseVarchar.java @@ -129,7 +129,7 @@ public abstract class ScalarTypeBaseVarchar extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.TEXT; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDuration.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDuration.java index 6f0dc11a4..478515765 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDuration.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeDuration.java @@ -112,7 +112,7 @@ public class ScalarTypeDuration extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.KEYWORD; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeJodaLocalTime.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeJodaLocalTime.java index 02dc9bae8..fd33c984b 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeJodaLocalTime.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeJodaLocalTime.java @@ -119,6 +119,6 @@ public class ScalarTypeJodaLocalTime extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.KEYWORD; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeLocalTime.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeLocalTime.java index 1e3d0da6f..c9fc34d57 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeLocalTime.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeLocalTime.java @@ -105,7 +105,7 @@ public class ScalarTypeLocalTime extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.KEYWORD; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonthDay.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonthDay.java index 983439a12..d8943b03e 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonthDay.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeMonthDay.java @@ -129,7 +129,7 @@ public class ScalarTypeMonthDay extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.KEYWORD; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeString.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeString.java index 0c3b31103..1c8638404 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeString.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeString.java @@ -96,6 +96,6 @@ public class ScalarTypeString extends ScalarTypeBase { @Override public DocPropertyType getDocType() { - return DocPropertyType.STRING; + return DocPropertyType.TEXT; } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeTime.java b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeTime.java index 09e046062..f310e918d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeTime.java +++ b/src/main/java/com/avaje/ebeaninternal/server/type/ScalarTypeTime.java @@ -98,7 +98,7 @@ public class ScalarTypeTime extends ScalarTypeBase