From 9841a2c03a0027305c3fe156395bc888ef57f3f5 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 4 Dec 2019 21:28:27 +1300 Subject: [PATCH] #1880 - Cidr type stored as INET (instead of CIDR) + named as Cdir (typo) --- pom.xml | 2 +- .../dbplatform/DbPlatformTypeMapping.java | 4 +++ .../io/ebean/config/dbplatform/DbType.java | 2 +- .../ebean/config/dbplatform/ExtraDbTypes.java | 2 +- .../clickhouse/ClickHousePlatform.java | 2 +- .../dbplatform/postgres/PostgresPlatform.java | 1 + .../server/type/DefaultTypeManager.java | 6 ++--- .../server/type/ScalarTypeCdir.java | 22 ++++++++-------- .../tests/basic/type/TestInetAddressType.java | 26 +++++++++---------- .../org/tests/model/basic/EWithInetAddr.java | 12 ++++----- 10 files changed, 42 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 94dac9412..ca6f7eaf0 100644 --- a/pom.xml +++ b/pom.xml @@ -124,7 +124,7 @@ io.ebean ebean-types - 1.3 + 2.1 diff --git a/src/main/java/io/ebean/config/dbplatform/DbPlatformTypeMapping.java b/src/main/java/io/ebean/config/dbplatform/DbPlatformTypeMapping.java index cc17d0fb3..c5d25a889 100644 --- a/src/main/java/io/ebean/config/dbplatform/DbPlatformTypeMapping.java +++ b/src/main/java/io/ebean/config/dbplatform/DbPlatformTypeMapping.java @@ -29,6 +29,8 @@ public class DbPlatformTypeMapping { private static final DbPlatformType INET_NATIVE = new DbPlatformType("inet", false); private static final DbPlatformType INET_VARCHAR = new DbPlatformType("varchar", 50); + private static final DbPlatformType CIDR_NATIVE = new DbPlatformType("cidr", false); + private static final DbPlatformType CIDR_VARCHAR = new DbPlatformType("varchar", 50); private static final DbPlatformType UUID_NATIVE = new DbPlatformType("uuid", false); @SuppressWarnings("unused") @@ -110,6 +112,7 @@ public class DbPlatformTypeMapping { put(DbType.JSONVARCHAR, new DbPlatformType("jsonvarchar", 1000)); put(DbType.UUID, UUID_NATIVE); put(DbType.INET, INET_NATIVE); + put(DbType.CIDR, CIDR_NATIVE); } else { put(DbType.VARCHAR, new DbPlatformType("varchar", 255)); @@ -126,6 +129,7 @@ public class DbPlatformTypeMapping { // default to native UUID and override on platform configure() put(DbType.UUID, UUID_NATIVE); put(DbType.INET, INET_VARCHAR); + put(DbType.CIDR, CIDR_VARCHAR); } } diff --git a/src/main/java/io/ebean/config/dbplatform/DbType.java b/src/main/java/io/ebean/config/dbplatform/DbType.java index 6f7705d65..5a9fa51bb 100644 --- a/src/main/java/io/ebean/config/dbplatform/DbType.java +++ b/src/main/java/io/ebean/config/dbplatform/DbType.java @@ -36,7 +36,7 @@ public enum DbType { UUID(ExtraDbTypes.UUID), INET(ExtraDbTypes.INET), - CDIR(ExtraDbTypes.CDIR), + CIDR(ExtraDbTypes.CIDR), POINT(ExtraDbTypes.POINT), POLYGON(ExtraDbTypes.POLYGON), diff --git a/src/main/java/io/ebean/config/dbplatform/ExtraDbTypes.java b/src/main/java/io/ebean/config/dbplatform/ExtraDbTypes.java index d7b0f9339..e56fe2b89 100644 --- a/src/main/java/io/ebean/config/dbplatform/ExtraDbTypes.java +++ b/src/main/java/io/ebean/config/dbplatform/ExtraDbTypes.java @@ -41,7 +41,7 @@ public interface ExtraDbTypes { int JSONBlob = 5005; int INET = 5020; - int CDIR = 5021; + int CIDR = 5021; /** * Geo Point diff --git a/src/main/java/io/ebean/config/dbplatform/clickhouse/ClickHousePlatform.java b/src/main/java/io/ebean/config/dbplatform/clickhouse/ClickHousePlatform.java index 17ee210bf..742f97321 100644 --- a/src/main/java/io/ebean/config/dbplatform/clickhouse/ClickHousePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/clickhouse/ClickHousePlatform.java @@ -47,7 +47,7 @@ public class ClickHousePlatform extends DatabasePlatform { dbTypeMap.put(DbType.UUID, new DbPlatformType("UUID", false)); dbTypeMap.put(DbType.INET, new DbPlatformType("String", false)); - dbTypeMap.put(DbType.CDIR, new DbPlatformType("String", false)); + dbTypeMap.put(DbType.CIDR, new DbPlatformType("String", false)); } @Override diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java index b280d1a61..0c17ab55f 100644 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java @@ -63,6 +63,7 @@ public class PostgresPlatform extends DatabasePlatform { dbTypeMap.put(DbType.UUID, new DbPlatformType("uuid", false)); dbTypeMap.put(DbType.INET, new DbPlatformType("inet", false)); + dbTypeMap.put(DbType.CIDR, new DbPlatformType("cidr", false)); dbTypeMap.put(DbType.HSTORE, new DbPlatformType("hstore", false)); dbTypeMap.put(DbType.JSON, new DbPlatformType("json", false)); dbTypeMap.put(DbType.JSONB, new DbPlatformType("jsonb", false)); diff --git a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index 9da7169dc..907484a4d 100644 --- a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -14,7 +14,7 @@ import io.ebean.config.ScalarTypeConverter; import io.ebean.config.ServerConfig; import io.ebean.config.dbplatform.DatabasePlatform; import io.ebean.config.dbplatform.DbPlatformType; -import io.ebean.types.Cdir; +import io.ebean.types.Cidr; import io.ebean.types.Inet; import io.ebean.util.AnnotationUtil; import io.ebeaninternal.api.ExtraTypeFactory; @@ -993,10 +993,10 @@ public final class DefaultTypeManager implements TypeManager { } if (offlineMigrationGeneration || postgres) { - addType(Cdir.class, new ScalarTypeCdir.Postgres()); + addType(Cidr.class, new ScalarTypeCdir.Postgres()); addType(Inet.class, new ScalarTypeInet.Postgres()); } else { - addType(Cdir.class, new ScalarTypeCdir.Varchar()); + addType(Cidr.class, new ScalarTypeCdir.Varchar()); addType(Inet.class, new ScalarTypeInet.Varchar()); } diff --git a/src/main/java/io/ebeaninternal/server/type/ScalarTypeCdir.java b/src/main/java/io/ebeaninternal/server/type/ScalarTypeCdir.java index cef625c29..fe7573f49 100644 --- a/src/main/java/io/ebeaninternal/server/type/ScalarTypeCdir.java +++ b/src/main/java/io/ebeaninternal/server/type/ScalarTypeCdir.java @@ -1,7 +1,7 @@ package io.ebeaninternal.server.type; import io.ebean.config.dbplatform.ExtraDbTypes; -import io.ebean.types.Cdir; +import io.ebean.types.Cidr; import java.sql.SQLException; import java.sql.Types; @@ -9,33 +9,33 @@ import java.sql.Types; /** * ScalarType for Cdir to Varchar or Postgres CDIR. */ -public abstract class ScalarTypeCdir extends ScalarTypeBaseVarchar { +public abstract class ScalarTypeCdir extends ScalarTypeBaseVarchar { ScalarTypeCdir() { - super(Cdir.class, false, ExtraDbTypes.INET); + super(Cidr.class, false, ExtraDbTypes.CIDR); } @Override - public abstract void bind(DataBind b, Cdir value) throws SQLException; + public abstract void bind(DataBind b, Cidr value) throws SQLException; @Override - public Cdir convertFromDbString(String dbValue) { + public Cidr convertFromDbString(String dbValue) { return parse(dbValue); } @Override - public String convertToDbString(Cdir beanValue) { + public String convertToDbString(Cidr beanValue) { return formatValue(beanValue); } @Override - public String formatValue(Cdir value) { + public String formatValue(Cidr value) { return value.getAddress(); } @Override - public Cdir parse(String value) { - return new Cdir(value); + public Cidr parse(String value) { + return new Cidr(value); } /** @@ -44,7 +44,7 @@ public abstract class ScalarTypeCdir extends ScalarTypeBaseVarchar { public static class Varchar extends ScalarTypeCdir { @Override - public void bind(DataBind b, Cdir value) throws SQLException { + public void bind(DataBind b, Cidr value) throws SQLException { if (value == null) { b.setNull(Types.VARCHAR); } else { @@ -59,7 +59,7 @@ public abstract class ScalarTypeCdir extends ScalarTypeBaseVarchar { public static class Postgres extends ScalarTypeCdir { @Override - public void bind(DataBind b, Cdir value) throws SQLException { + public void bind(DataBind b, Cidr value) throws SQLException { if (value == null) { b.setNull(Types.OTHER); } else { diff --git a/src/test/java/org/tests/basic/type/TestInetAddressType.java b/src/test/java/org/tests/basic/type/TestInetAddressType.java index 6f821802f..66910df8f 100644 --- a/src/test/java/org/tests/basic/type/TestInetAddressType.java +++ b/src/test/java/org/tests/basic/type/TestInetAddressType.java @@ -2,7 +2,7 @@ package org.tests.basic.type; import io.ebean.DB; import io.ebean.TransactionalTestCase; -import io.ebean.types.Cdir; +import io.ebean.types.Cidr; import io.ebean.types.Inet; import org.junit.Test; import org.tests.model.basic.EWithInetAddr; @@ -21,16 +21,16 @@ public class TestInetAddressType extends TransactionalTestCase { @Test public void testIp4() throws UnknownHostException { - insertUpdateDeleteFind("120.12.12.56", "120.12.12.56"); + insertUpdateDeleteFind("120.12.12.56", "120.12.12.56", "192.168.100.128/25", "192.168.100.128/25"); } @Test public void testIp6() throws UnknownHostException { if (isPostgres()) { - insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3::8a2e:370:7334"); + insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3::8a2e:370:7334", "2001:4f8:3:ba::/64", "2001:4f8:3:ba::/64"); } else { - insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3:0:0:8a2e:370:7334"); + insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3:0:0:8a2e:370:7334", "192.168.100.128/25", "192.168.100.128/25"); } } @@ -85,7 +85,7 @@ public class TestInetAddressType extends TransactionalTestCase { .findList(); } - private void insertUpdateDeleteFind(String ipAddress, String expected) throws UnknownHostException { + private void insertUpdateDeleteFind(String ipAddress, String expected, String cidr, String cidrExpected) throws UnknownHostException { EWithInetAddr bean1 = new EWithInetAddr(); bean1.setName("jim"); @@ -93,7 +93,7 @@ public class TestInetAddressType extends TransactionalTestCase { InetAddress address1 = InetAddress.getByName(ipAddress); bean1.setInetAddress(address1); bean1.setInet2(new Inet(ipAddress)); - bean1.setCdir(new Cdir(ipAddress)); + bean1.setCidr(new Cidr(cidr)); DB.save(bean1); @@ -103,12 +103,12 @@ public class TestInetAddressType extends TransactionalTestCase { assertNotNull(address2.getHostAddress()); assertThat(address1.getHostAddress()).isEqualTo(address2.getHostAddress()); assertThat(bean2.getInet2().getAddress()).isEqualTo(expected); - assertThat(bean2.getCdir().getAddress()).isEqualTo(expected); + assertThat(bean2.getCidr().getAddress()).isEqualTo(cidrExpected); bean2.setName("modJim"); bean2.setInetAddress(InetAddress.getByName("120.12.20.80")); bean1.setInet2(new Inet("120.12.20.80")); - bean1.setCdir(new Cdir("120.12.20.80")); + bean1.setCidr(new Cidr("120.12.20.80")); DB.save(bean2); DB.delete(bean2); } @@ -116,23 +116,23 @@ public class TestInetAddressType extends TransactionalTestCase { @Test public void testIp6_ranges() { - insertFindDeleteRange("2001:4f8:3:ba::/64"); - insertFindDeleteRange("2001:4f8:3:ba:2e0:81ff:fe22:d1f1/64"); + insertFindDeleteRange("2001:4f8:3:ba::/64", "2001:4f8:3:ba::/64"); + insertFindDeleteRange("2001:4f8:3:ba:2e0:81ff:fe22:d1f1/64", "2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128"); } - private void insertFindDeleteRange(String ipAddressRange) { + private void insertFindDeleteRange(String ipAddressRange, String cidr) { EWithInetAddr bean1 = new EWithInetAddr(); bean1.setName("withRange"); bean1.setInet2(new Inet(ipAddressRange)); - bean1.setCdir(new Cdir(ipAddressRange)); + bean1.setCidr(new Cidr(cidr)); DB.save(bean1); EWithInetAddr bean2 = DB.find(EWithInetAddr.class, bean1.getId()); assertNotNull(bean2.getInet2()); assertThat(bean2.getInet2().getAddress()).isEqualTo(ipAddressRange); - assertThat(bean2.getCdir().getAddress()).isEqualTo(ipAddressRange); + assertThat(bean2.getCidr().getAddress()).isEqualTo(cidr); DB.delete(bean2); } diff --git a/src/test/java/org/tests/model/basic/EWithInetAddr.java b/src/test/java/org/tests/model/basic/EWithInetAddr.java index 87ca89342..29a187be3 100644 --- a/src/test/java/org/tests/model/basic/EWithInetAddr.java +++ b/src/test/java/org/tests/model/basic/EWithInetAddr.java @@ -1,6 +1,6 @@ package org.tests.model.basic; -import io.ebean.types.Cdir; +import io.ebean.types.Cidr; import io.ebean.types.Inet; import javax.persistence.Entity; @@ -25,7 +25,7 @@ public class EWithInetAddr { Inet inet2; - Cdir cdir; + Cidr cidr; public Long getId() { return id; @@ -67,11 +67,11 @@ public class EWithInetAddr { this.inet2 = inet2; } - public Cdir getCdir() { - return cdir; + public Cidr getCidr() { + return cidr; } - public void setCdir(Cdir cdir) { - this.cdir = cdir; + public void setCidr(Cidr cidr) { + this.cidr = cidr; } }