From f0590ad9d7e0396c7f24709d4f5affd4a5d5429b Mon Sep 17 00:00:00 2001 From: Ahoo Wang <ahoowang@qq.com> Date: Sat, 6 Jul 2024 17:28:13 +0800 Subject: [PATCH] feat: Merge main branch features --- build.gradle.kts | 2 +- .../main/java/me/ahoo/cosid/Decorator.java | 5 +- .../CompositeFieldDefinitionParserTest.java | 10 ++-- .../me/ahoo/cosid/stat/StatisticalTest.java | 28 +++++---- ...MongoReactiveIdSegmentDistributorTest.java | 6 +- .../ahoo/cosid/mybatis/CosIdPluginTest.java | 7 ++- .../proxy/ProxyMachineIdDistributor.java | 59 ++++++++++--------- .../boot/starter/IdConverterDecorator.java | 26 +++++--- .../boot/starter/actuate/CosIdEndpoint.java | 6 +- .../CosIdGeneratorAutoConfiguration.java | 27 ++++----- .../segment/SegmentIdBeanRegistrar.java | 16 +++-- .../snowflake/SnowflakeIdBeanRegistrar.java | 24 ++++---- .../starter/actuate/CosIdEndpointTest.java | 11 ++-- .../actuate/CosIdGeneratorEndpointTest.java | 4 +- .../CosIdStringGeneratorEndpointTest.java | 4 +- .../jdbc/CosIdBeforeConvertCallbackTest.java | 8 +-- gradle/libs.versions.toml | 8 +-- 17 files changed, 141 insertions(+), 110 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 621f911dcb..43aa7f67a1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,7 +75,7 @@ configure(libraryProjects) { apply<JavaLibraryPlugin>() configure<JavaPluginExtension> { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(8)) } withJavadocJar() withSourcesJar() diff --git a/cosid-core/src/main/java/me/ahoo/cosid/Decorator.java b/cosid-core/src/main/java/me/ahoo/cosid/Decorator.java index 045003d3c1..326b1daeee 100644 --- a/cosid-core/src/main/java/me/ahoo/cosid/Decorator.java +++ b/cosid-core/src/main/java/me/ahoo/cosid/Decorator.java @@ -17,10 +17,11 @@ public interface Decorator<D> { */ @Nonnull D getActual(); - + @SuppressWarnings({"unchecked", "rawtypes"}) static <D> D getActual(D any) { - if (any instanceof Decorator decorator) { + if (any instanceof Decorator) { + Decorator decorator = (Decorator) any; return getActual((D) decorator.getActual()); } return any; diff --git a/cosid-core/src/test/java/me/ahoo/cosid/accessor/parser/CompositeFieldDefinitionParserTest.java b/cosid-core/src/test/java/me/ahoo/cosid/accessor/parser/CompositeFieldDefinitionParserTest.java index 9d4b4d5ec7..1ff3bfee10 100644 --- a/cosid-core/src/test/java/me/ahoo/cosid/accessor/parser/CompositeFieldDefinitionParserTest.java +++ b/cosid-core/src/test/java/me/ahoo/cosid/accessor/parser/CompositeFieldDefinitionParserTest.java @@ -13,6 +13,7 @@ package me.ahoo.cosid.accessor.parser; +import com.google.common.collect.Lists; import me.ahoo.cosid.accessor.IdDefinition; import me.ahoo.cosid.annotation.AnnotationDefinitionParser; import me.ahoo.cosid.annotation.entity.IdNotFoundEntity; @@ -31,9 +32,10 @@ class CompositeFieldDefinitionParserTest { @SneakyThrows @Test void parse() { - var compositeFieldDefinitionParser = new CompositeFieldDefinitionParser(List.of(AnnotationDefinitionParser.INSTANCE)); + + CompositeFieldDefinitionParser compositeFieldDefinitionParser = new CompositeFieldDefinitionParser(Lists.newArrayList(AnnotationDefinitionParser.INSTANCE)); Field idField = LongIdEntity.class.getDeclaredField("id"); - IdDefinition idDefinition = compositeFieldDefinitionParser.parse(List.of(LongIdEntity.class), idField); + IdDefinition idDefinition = compositeFieldDefinitionParser.parse(Lists.newArrayList(LongIdEntity.class), idField); Assertions.assertNotEquals(IdDefinition.NOT_FOUND, idDefinition); Assertions.assertEquals(IdGeneratorProvider.SHARE, idDefinition.getGeneratorName()); @@ -42,9 +44,9 @@ void parse() { @SneakyThrows @Test void parseIfNotFound() { - var compositeFieldDefinitionParser = new CompositeFieldDefinitionParser(List.of(AnnotationDefinitionParser.INSTANCE)); + CompositeFieldDefinitionParser compositeFieldDefinitionParser = new CompositeFieldDefinitionParser(Lists.newArrayList(AnnotationDefinitionParser.INSTANCE)); Field nameField = IdNotFoundEntity.class.getDeclaredField("name"); - IdDefinition idDefinition = compositeFieldDefinitionParser.parse(List.of(IdNotFoundEntity.class), nameField); + IdDefinition idDefinition = compositeFieldDefinitionParser.parse(Lists.newArrayList(IdNotFoundEntity.class), nameField); Assertions.assertEquals(IdDefinition.NOT_FOUND, idDefinition); } } \ No newline at end of file diff --git a/cosid-core/src/test/java/me/ahoo/cosid/stat/StatisticalTest.java b/cosid-core/src/test/java/me/ahoo/cosid/stat/StatisticalTest.java index 67b78559fc..3e09dfb2fa 100644 --- a/cosid-core/src/test/java/me/ahoo/cosid/stat/StatisticalTest.java +++ b/cosid-core/src/test/java/me/ahoo/cosid/stat/StatisticalTest.java @@ -16,6 +16,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; +import me.ahoo.cosid.IdGenerator; import me.ahoo.cosid.converter.Radix62IdConverter; import me.ahoo.cosid.cosid.Radix36CosIdGenerator; import me.ahoo.cosid.jvm.UuidGenerator; @@ -25,6 +26,7 @@ import me.ahoo.cosid.snowflake.MillisecondSnowflakeId; import me.ahoo.cosid.snowflake.StringSnowflakeId; import me.ahoo.cosid.stat.generator.CosIdGeneratorStat; +import me.ahoo.cosid.stat.generator.IdGeneratorStat; import me.ahoo.cosid.stat.generator.SegmentIdStat; import me.ahoo.cosid.stat.generator.SimpleIdGeneratorStat; @@ -37,51 +39,51 @@ class StatisticalTest { @Test void statUuidGenerator() { - var stat = UuidGenerator.INSTANCE.stat(); + IdGeneratorStat stat = UuidGenerator.INSTANCE.stat(); Assertions.assertNotNull(stat); } @Test void statSnowflakeId() { - var snowflakeId = new MillisecondSnowflakeId(0); - var stat = snowflakeId.stat(); + IdGenerator snowflakeId = new MillisecondSnowflakeId(0); + IdGeneratorStat stat = snowflakeId.stat(); Assertions.assertNotNull(stat); assertThat(stat, Matchers.instanceOf(SnowflakeIdStat.class)); - var snowflakeIdStat = (SnowflakeIdStat) stat; + SnowflakeIdStat snowflakeIdStat = (SnowflakeIdStat) stat; assertThat(snowflakeIdStat.getMachineId(), equalTo(0)); } @Test void statStringSnowflakeId() { - var snowflakeId = new StringSnowflakeId(new MillisecondSnowflakeId(0), Radix62IdConverter.INSTANCE); - var stat = snowflakeId.stat(); + IdGenerator snowflakeId = new StringSnowflakeId(new MillisecondSnowflakeId(0), Radix62IdConverter.INSTANCE); + IdGeneratorStat stat = snowflakeId.stat(); Assertions.assertNotNull(stat); assertThat(stat, Matchers.instanceOf(SimpleIdGeneratorStat.class)); } @Test void statSegmentId() { - var segmentId = new DefaultSegmentId(new IdSegmentDistributor.Mock()); - var stat = segmentId.stat(); + IdGenerator segmentId = new DefaultSegmentId(new IdSegmentDistributor.Mock()); + IdGeneratorStat stat = segmentId.stat(); Assertions.assertNotNull(stat); assertThat(stat, Matchers.instanceOf(SegmentIdStat.class)); } @Test void statStringSegmentId() { - var segmentId = new StringSegmentId(new DefaultSegmentId(new IdSegmentDistributor.Mock()), Radix62IdConverter.INSTANCE); - var stat = segmentId.stat(); + IdGenerator segmentId = new StringSegmentId(new DefaultSegmentId(new IdSegmentDistributor.Mock()), Radix62IdConverter.INSTANCE); + IdGeneratorStat stat = segmentId.stat(); Assertions.assertNotNull(stat); assertThat(stat, Matchers.instanceOf(SimpleIdGeneratorStat.class)); } @Test void statCosIdGenerator() { - var cosIdGenerator = new Radix36CosIdGenerator(0); - var stat = cosIdGenerator.stat(); + IdGenerator cosIdGenerator = new Radix36CosIdGenerator(0); + IdGeneratorStat stat = cosIdGenerator.stat(); Assertions.assertNotNull(stat); assertThat(stat, Matchers.instanceOf(CosIdGeneratorStat.class)); - var cosIdGeneratorStat = (CosIdGeneratorStat) stat; + CosIdGeneratorStat cosIdGeneratorStat = (CosIdGeneratorStat) stat; assertThat(cosIdGeneratorStat.getMachineId(), equalTo(0)); } } \ No newline at end of file diff --git a/cosid-mongo/src/test/java/me/ahoo/cosid/mongo/MongoReactiveIdSegmentDistributorTest.java b/cosid-mongo/src/test/java/me/ahoo/cosid/mongo/MongoReactiveIdSegmentDistributorTest.java index 2f3a4d0db2..55275b0611 100644 --- a/cosid-mongo/src/test/java/me/ahoo/cosid/mongo/MongoReactiveIdSegmentDistributorTest.java +++ b/cosid-mongo/src/test/java/me/ahoo/cosid/mongo/MongoReactiveIdSegmentDistributorTest.java @@ -66,7 +66,7 @@ public void nextMaxIdWhenBack() { @Test public void nextMaxIdInParallel() { - var mono = Mono.fromRunnable(() -> { + Mono<Object> mono = Mono.fromRunnable(() -> { String namespace = MockIdGenerator.INSTANCE.generateAsString(); IdSegmentDistributorDefinition definition = new IdSegmentDistributorDefinition(namespace, "nextMaxIdIParallel", TEST_OFFSET, TEST_STEP); IdSegmentDistributor distributor = factory().create(definition); @@ -84,11 +84,11 @@ public void batchNextMaxId() { String namespace = MockIdGenerator.INSTANCE.generateAsString(); IdSegmentDistributorDefinition definition = new IdSegmentDistributorDefinition(namespace, "batchNextMaxId", 1, 1); IdSegmentDistributor distributor = factory().create(definition); - var segmentChainId = new SegmentChainId(distributor); + SegmentChainId segmentChainId = new SegmentChainId(distributor); for (int i = 0; i < 1000; i++) { segmentChainId.generateAsString(); } - var mono = Mono.fromRunnable(() -> { + Mono<Object> mono = Mono.fromRunnable(() -> { for (int i = 0; i < 1000; i++) { segmentChainId.generateAsString(); } diff --git a/cosid-mybatis/src/test/java/me/ahoo/cosid/mybatis/CosIdPluginTest.java b/cosid-mybatis/src/test/java/me/ahoo/cosid/mybatis/CosIdPluginTest.java index 3739d57d61..9f5bdd5d6f 100644 --- a/cosid-mybatis/src/test/java/me/ahoo/cosid/mybatis/CosIdPluginTest.java +++ b/cosid-mybatis/src/test/java/me/ahoo/cosid/mybatis/CosIdPluginTest.java @@ -1,5 +1,6 @@ package me.ahoo.cosid.mybatis; +import com.google.common.collect.Lists; import me.ahoo.cosid.accessor.parser.DefaultAccessorParser; import me.ahoo.cosid.accessor.registry.DefaultAccessorRegistry; import me.ahoo.cosid.annotation.AnnotationDefinitionParser; @@ -181,12 +182,12 @@ public int update(MappedStatement ms, Object parameter) throws SQLException { @Override public <E> List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey cacheKey, BoundSql boundSql) throws SQLException { - return List.of(); + return Lists.newArrayList(); } @Override public <E> List<E> query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException { - return List.of(); + return Lists.newArrayList(); } @Override @@ -196,7 +197,7 @@ public <E> Cursor<E> queryCursor(MappedStatement ms, Object parameter, RowBounds @Override public List<BatchResult> flushStatements() throws SQLException { - return List.of(); + return Lists.newArrayList(); } @Override diff --git a/cosid-proxy/src/main/java/me/ahoo/cosid/proxy/ProxyMachineIdDistributor.java b/cosid-proxy/src/main/java/me/ahoo/cosid/proxy/ProxyMachineIdDistributor.java index c945dafcbe..9cf5630e7a 100644 --- a/cosid-proxy/src/main/java/me/ahoo/cosid/proxy/ProxyMachineIdDistributor.java +++ b/cosid-proxy/src/main/java/me/ahoo/cosid/proxy/ProxyMachineIdDistributor.java @@ -45,31 +45,31 @@ */ @Slf4j public class ProxyMachineIdDistributor extends AbstractMachineIdDistributor { - + private final OkHttpClient client; - + private final String proxyHost; - + public ProxyMachineIdDistributor(OkHttpClient client, String proxyHost, MachineStateStorage machineStateStorage, ClockBackwardsSynchronizer clockBackwardsSynchronizer) { super(machineStateStorage, clockBackwardsSynchronizer); this.client = client; this.proxyHost = proxyHost; } - + @SneakyThrows @Override protected MachineState distributeRemote(String namespace, int machineBit, InstanceId instanceId, Duration safeGuardDuration) { String apiUrl = - Strings.lenientFormat("%s/machines/%s?instanceId=%s&stable=%s&machineBit=%s&safeGuardDuration=%s", proxyHost, namespace, instanceId.getInstanceId(), instanceId.isStable(), machineBit, - safeGuardDuration); + Strings.lenientFormat("%s/machines/%s?instanceId=%s&stable=%s&machineBit=%s&safeGuardDuration=%s", proxyHost, namespace, instanceId.getInstanceId(), instanceId.isStable(), machineBit, + safeGuardDuration); if (log.isInfoEnabled()) { log.info("Distribute Remote instanceId:[{}] - machineBit:[{}] @ namespace:[{}] - apiUrl:[{}].", instanceId, machineBit, namespace, apiUrl); } - + Request request = new Request.Builder() - .url(apiUrl) - .post(Util.EMPTY_REQUEST) - .build(); + .url(apiUrl) + .post(Util.EMPTY_REQUEST) + .build(); try (Response response = client.newCall(request).execute()) { ResponseBody responseBody = response.body(); assert responseBody != null; @@ -77,7 +77,7 @@ protected MachineState distributeRemote(String namespace, int machineBit, Instan if (log.isInfoEnabled()) { log.info("Distribute Remote instanceId:[{}] - machineBit:[{}] @ namespace:[{}] - response:[{}].", instanceId, machineBit, namespace, bodyStr); } - + if (response.isSuccessful()) { return Jsons.OBJECT_MAPPER.readValue(bodyStr, MachineStateDto.class); } @@ -88,7 +88,7 @@ protected MachineState distributeRemote(String namespace, int machineBit, Instan throw new IllegalStateException(Strings.lenientFormat("Unexpected code:[%s] - message:[%s].", errorResponse.getCode(), errorResponse.getMsg())); } } - + @SneakyThrows @Override protected void revertRemote(String namespace, InstanceId instanceId, MachineState machineState) { @@ -96,11 +96,11 @@ protected void revertRemote(String namespace, InstanceId instanceId, MachineStat if (log.isInfoEnabled()) { log.info("Revert Remote [{}] instanceId:[{}] @ namespace:[{}] - apiUrl:[{}].", machineState, instanceId, namespace, apiUrl); } - + Request request = new Request.Builder() - .url(apiUrl) - .delete() - .build(); + .url(apiUrl) + .delete() + .build(); try (Response response = client.newCall(request).execute()) { if (log.isInfoEnabled()) { ResponseBody responseBody = response.body(); @@ -110,21 +110,21 @@ protected void revertRemote(String namespace, InstanceId instanceId, MachineStat } } } - + @SneakyThrows @Override protected void guardRemote(String namespace, InstanceId instanceId, MachineState machineState, Duration safeGuardDuration) { String apiUrl = - Strings.lenientFormat("%s/machines/%s?instanceId=%s&stable=%s&safeGuardDuration=%s", proxyHost, namespace, instanceId.getInstanceId(), instanceId.isStable(), safeGuardDuration); - + Strings.lenientFormat("%s/machines/%s?instanceId=%s&stable=%s&safeGuardDuration=%s", proxyHost, namespace, instanceId.getInstanceId(), instanceId.isStable(), safeGuardDuration); + if (log.isInfoEnabled()) { log.info("Guard Remote [{}] instanceId:[{}] @ namespace:[{}] - apiUrl:[{}].", machineState, instanceId, namespace, apiUrl); } - + Request request = new Request.Builder() - .url(apiUrl) - .patch(Util.EMPTY_REQUEST) - .build(); + .url(apiUrl) + .patch(Util.EMPTY_REQUEST) + .build(); try (Response response = client.newCall(request).execute()) { ResponseBody responseBody = response.body(); assert responseBody != null; @@ -135,14 +135,17 @@ protected void guardRemote(String namespace, InstanceId instanceId, MachineState if (response.isSuccessful()) { return; } - + ErrorResponse errorResponse = Jsons.OBJECT_MAPPER.readValue(bodyStr, ErrorResponse.class); switch (errorResponse.getCode()) { - case NOT_FOUND_MACHINE_STATE -> throw new NotFoundMachineStateException(namespace, instanceId); - case MACHINE_ID_LOST -> throw new MachineIdLostException(namespace, instanceId, machineState); - default -> throw new IllegalStateException("Unexpected value: " + errorResponse.getCode()); + case NOT_FOUND_MACHINE_STATE: + throw new NotFoundMachineStateException(namespace, instanceId); + case MACHINE_ID_LOST: + throw new MachineIdLostException(namespace, instanceId, machineState); + default: + throw new IllegalStateException("Unexpected value: " + errorResponse.getCode()); } } } - + } diff --git a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/IdConverterDecorator.java b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/IdConverterDecorator.java index 6eb22f7360..d2ee958a60 100644 --- a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/IdConverterDecorator.java +++ b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/IdConverterDecorator.java @@ -40,12 +40,23 @@ protected IdConverterDecorator(T idGenerator, IdConverterDefinition converterDef public T decorate() { IdConverter idConverter = ToStringIdConverter.INSTANCE; switch (converterDefinition.getType()) { - case TO_STRING -> idConverter = newToString(idConverter); - case RADIX -> idConverter = newRadix(); - case RADIX36 -> idConverter = newRadix36(); - case SNOWFLAKE_FRIENDLY -> idConverter = newSnowflakeFriendly(); - case CUSTOM -> idConverter = newCustom(); - default -> throw new IllegalStateException("Unexpected value: " + converterDefinition.getType()); + case TO_STRING: + idConverter = newToString(idConverter); + break; + case RADIX: + idConverter = newRadix(); + break; + case RADIX36: + idConverter = newRadix36(); + break; + case SNOWFLAKE_FRIENDLY: + idConverter = newSnowflakeFriendly(); + break; + case CUSTOM: + idConverter = newCustom(); + break; + default: + throw new IllegalStateException("Unexpected value: " + converterDefinition.getType()); } IdConverterDefinition.GroupPrefix groupPrefix = converterDefinition.getGroupPrefix(); @@ -103,7 +114,8 @@ protected IdConverter newCustom() { IdConverterDefinition.Custom custom = converterDefinition.getCustom(); try { return custom.getType().getConstructor().newInstance(); - } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + } catch (InstantiationException | IllegalAccessException | InvocationTargetException + | NoSuchMethodException e) { throw new RuntimeException(e); } } diff --git a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpoint.java b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpoint.java index d70e03211f..8af59eb720 100644 --- a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpoint.java +++ b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpoint.java @@ -38,7 +38,7 @@ public CosIdEndpoint(IdGeneratorProvider idGeneratorProvider) { public Map<String, IdGeneratorStat> stat() { Map<String, IdGeneratorStat> statMap = new HashMap<>(); for (Map.Entry<String, IdGenerator> entry : idGeneratorProvider.entries()) { - var stat = entry.getValue().stat(); + IdGeneratorStat stat = entry.getValue().stat(); statMap.put(entry.getKey(), stat); } return statMap; @@ -46,13 +46,13 @@ public Map<String, IdGeneratorStat> stat() { @ReadOperation public IdGeneratorStat getStat(@Selector String name) { - var idGenerator = idGeneratorProvider.getRequired(name); + IdGenerator idGenerator = idGeneratorProvider.getRequired(name); return idGenerator.stat(); } @DeleteOperation public IdGeneratorStat remove(@Selector String name) { - var idGenerator = idGeneratorProvider.remove(name); + IdGenerator idGenerator = idGeneratorProvider.remove(name); return idGenerator.stat(); } diff --git a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/cosid/CosIdGeneratorAutoConfiguration.java b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/cosid/CosIdGeneratorAutoConfiguration.java index 7cceb0b721..358c3cb401 100644 --- a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/cosid/CosIdGeneratorAutoConfiguration.java +++ b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/cosid/CosIdGeneratorAutoConfiguration.java @@ -49,13 +49,13 @@ public class CosIdGeneratorAutoConfiguration { private final CosIdProperties cosIdProperties; private final MachineProperties machineProperties; private final CosIdGeneratorProperties cosIdGeneratorProperties; - + public CosIdGeneratorAutoConfiguration(CosIdProperties cosIdProperties, MachineProperties machineProperties, CosIdGeneratorProperties cosIdGeneratorProperties) { this.cosIdProperties = cosIdProperties; this.machineProperties = machineProperties; this.cosIdGeneratorProperties = cosIdGeneratorProperties; } - + @Bean @Primary @ConditionalOnMissingBean @@ -63,29 +63,28 @@ public CosIdGenerator cosIdGenerator(MachineIdDistributor machineIdDistributor, ClockBackwardsSynchronizer clockBackwardsSynchronizer) { String namespace = Namespaces.firstNotBlank(cosIdGeneratorProperties.getNamespace(), cosIdProperties.getNamespace()); int machineId = - machineIdDistributor.distribute(namespace, cosIdGeneratorProperties.getMachineBit(), instanceId, machineProperties.getSafeGuardDuration()).getMachineId(); + machineIdDistributor.distribute(namespace, cosIdGeneratorProperties.getMachineBit(), instanceId, machineProperties.getSafeGuardDuration()).getMachineId(); machineIdGuarder.register(namespace, instanceId); CosIdGenerator cosIdGenerator = createCosIdGenerator(machineId); - + CosIdGenerator clockSyncCosIdGenerator = new ClockSyncCosIdGenerator(cosIdGenerator, clockBackwardsSynchronizer); idGeneratorProvider.set(CosId.COSID, clockSyncCosIdGenerator); return clockSyncCosIdGenerator; } - + @Nonnull private CosIdGenerator createCosIdGenerator(int machineId) { switch (cosIdGeneratorProperties.getType()) { - case RADIX62 -> { + case RADIX62: return new Radix62CosIdGenerator(cosIdGeneratorProperties.getTimestampBit(), - cosIdGeneratorProperties.getMachineBit(), cosIdGeneratorProperties.getSequenceBit(), machineId, - cosIdGeneratorProperties.getSequenceResetThreshold()); - } - case RADIX36 -> { + cosIdGeneratorProperties.getMachineBit(), cosIdGeneratorProperties.getSequenceBit(), machineId, + cosIdGeneratorProperties.getSequenceResetThreshold()); + case RADIX36: return new Radix36CosIdGenerator(cosIdGeneratorProperties.getTimestampBit(), - cosIdGeneratorProperties.getMachineBit(), cosIdGeneratorProperties.getSequenceBit(), machineId, - cosIdGeneratorProperties.getSequenceResetThreshold()); - } - default -> throw new IllegalStateException("Unexpected value: " + cosIdGeneratorProperties.getType()); + cosIdGeneratorProperties.getMachineBit(), cosIdGeneratorProperties.getSequenceBit(), machineId, + cosIdGeneratorProperties.getSequenceResetThreshold()); + default: + throw new IllegalStateException("Unexpected value: " + cosIdGeneratorProperties.getType()); } } } diff --git a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/segment/SegmentIdBeanRegistrar.java b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/segment/SegmentIdBeanRegistrar.java index fa5c1ae01f..123b6c8286 100644 --- a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/segment/SegmentIdBeanRegistrar.java +++ b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/segment/SegmentIdBeanRegistrar.java @@ -85,10 +85,18 @@ private void registerIdDefinition(String name, SegmentIdProperties.IdDefinition SegmentIdProperties.IdDefinition.Group group = idDefinition.getGroup(); GroupBySupplier groupBySupplier; switch (group.getBy()) { - case YEAR -> groupBySupplier = new YearGroupBySupplier(group.getPattern()); - case YEAR_MONTH -> groupBySupplier = new YearMonthGroupBySupplier(group.getPattern()); - case YEAR_MONTH_DAY -> groupBySupplier = new YearMonthDayGroupBySupplier(group.getPattern()); - default -> groupBySupplier = null; + case YEAR: + groupBySupplier = new YearGroupBySupplier(group.getPattern()); + break; + case YEAR_MONTH: + groupBySupplier = new YearMonthGroupBySupplier(group.getPattern()); + break; + case YEAR_MONTH_DAY: + groupBySupplier = new YearMonthDayGroupBySupplier(group.getPattern()); + break; + default: + groupBySupplier = null; + break; } if (groupBySupplier != null) { diff --git a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/snowflake/SnowflakeIdBeanRegistrar.java b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/snowflake/SnowflakeIdBeanRegistrar.java index 07767aeea3..0e5baa9a0d 100644 --- a/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/snowflake/SnowflakeIdBeanRegistrar.java +++ b/cosid-spring-boot-starter/src/main/java/me/ahoo/cosid/spring/boot/starter/snowflake/SnowflakeIdBeanRegistrar.java @@ -44,7 +44,7 @@ public class SnowflakeIdBeanRegistrar implements InitializingBean { private final ConfigurableApplicationContext applicationContext; @Nullable private final CustomizeSnowflakeIdProperties customizeSnowflakeIdProperties; - + public SnowflakeIdBeanRegistrar(CosIdProperties cosIdProperties, MachineProperties machineProperties, SnowflakeIdProperties snowflakeIdProperties, @@ -64,12 +64,12 @@ public SnowflakeIdBeanRegistrar(CosIdProperties cosIdProperties, this.applicationContext = applicationContext; this.customizeSnowflakeIdProperties = customizeSnowflakeIdProperties; } - + @Override public void afterPropertiesSet() { register(); } - + public void register() { if (customizeSnowflakeIdProperties != null) { customizeSnowflakeIdProperties.customize(snowflakeIdProperties); @@ -80,34 +80,34 @@ public void register() { } snowflakeIdProperties.getProvider().forEach(this::registerIdDefinition); } - + private void registerIdDefinition(String name, SnowflakeIdProperties.IdDefinition idDefinition) { SnowflakeId idGenerator = createIdGen(idDefinition, clockBackwardsSynchronizer); registerSnowflakeId(name, idGenerator); } - + private void registerSnowflakeId(String name, SnowflakeId snowflakeId) { - if (idGeneratorProvider.get(name).isEmpty()) { + if (!idGeneratorProvider.get(name).isPresent()) { idGeneratorProvider.set(name, snowflakeId); } - + String beanName = name + "SnowflakeId"; applicationContext.getBeanFactory().registerSingleton(beanName, snowflakeId); } - + private SnowflakeId createIdGen(SnowflakeIdProperties.IdDefinition idDefinition, ClockBackwardsSynchronizer clockBackwardsSynchronizer) { long epoch = getEpoch(idDefinition); int machineBit = MoreObjects.firstNonNull(idDefinition.getMachineBit(), machineProperties.getMachineBit()); String namespace = Namespaces.firstNotBlank(idDefinition.getNamespace(), cosIdProperties.getNamespace()); int machineId = machineIdDistributor.distribute(namespace, machineBit, instanceId, machineProperties.getSafeGuardDuration()).getMachineId(); - + SnowflakeId snowflakeId; if (SnowflakeIdProperties.IdDefinition.TimestampUnit.SECOND.equals(idDefinition.getTimestampUnit())) { snowflakeId = new SecondSnowflakeId(epoch, idDefinition.getTimestampBit(), machineBit, idDefinition.getSequenceBit(), machineId, idDefinition.getSequenceResetThreshold()); } else { snowflakeId = - new MillisecondSnowflakeId(epoch, idDefinition.getTimestampBit(), machineBit, idDefinition.getSequenceBit(), machineId, idDefinition.getSequenceResetThreshold()); + new MillisecondSnowflakeId(epoch, idDefinition.getTimestampBit(), machineBit, idDefinition.getSequenceBit(), machineId, idDefinition.getSequenceResetThreshold()); } if (idDefinition.isClockSync()) { snowflakeId = new ClockSyncSnowflakeId(snowflakeId, clockBackwardsSynchronizer); @@ -116,12 +116,12 @@ private SnowflakeId createIdGen(SnowflakeIdProperties.IdDefinition idDefinition, final ZoneId zoneId = ZoneId.of(snowflakeIdProperties.getZoneId()); return new SnowflakeIdConverterDecorator(snowflakeId, converterDefinition, zoneId, idDefinition.isFriendly()).decorate(); } - + private long getEpoch(SnowflakeIdProperties.IdDefinition idDefinition) { if (idDefinition.getEpoch() > 0) { return idDefinition.getEpoch(); } return snowflakeIdProperties.getEpoch(); } - + } diff --git a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpointTest.java b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpointTest.java index 3c77b81e0f..8f930af94e 100644 --- a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpointTest.java +++ b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdEndpointTest.java @@ -18,10 +18,13 @@ import me.ahoo.cosid.provider.DefaultIdGeneratorProvider; import me.ahoo.cosid.provider.IdGeneratorProvider; +import me.ahoo.cosid.stat.generator.IdGeneratorStat; import me.ahoo.cosid.test.MockIdGenerator; import org.junit.jupiter.api.Test; +import java.util.Map; + class CosIdEndpointTest { private final IdGeneratorProvider idGeneratorProvider = new DefaultIdGeneratorProvider(); private final CosIdEndpoint cosIdEndpoint = new CosIdEndpoint(idGeneratorProvider); @@ -32,21 +35,21 @@ public CosIdEndpointTest() { @Test void stat() { - var stat = cosIdEndpoint.stat(); + Map<String, IdGeneratorStat> stat = cosIdEndpoint.stat(); assertThat(stat, notNullValue()); assertThat(stat.size(), equalTo(1)); } @Test void getStat() { - var stat = cosIdEndpoint.getStat(IdGeneratorProvider.SHARE); + IdGeneratorStat stat = cosIdEndpoint.getStat(IdGeneratorProvider.SHARE); assertThat(stat, notNullValue()); } @Test void remove() { - var idGeneratorProvider = new DefaultIdGeneratorProvider(); - var cosIdEndpoint = new CosIdEndpoint(idGeneratorProvider); + DefaultIdGeneratorProvider idGeneratorProvider = new DefaultIdGeneratorProvider(); + CosIdEndpoint cosIdEndpoint = new CosIdEndpoint(idGeneratorProvider); idGeneratorProvider.setShare(MockIdGenerator.INSTANCE); cosIdEndpoint.remove(IdGeneratorProvider.SHARE); assertThat(idGeneratorProvider.getShare(), nullValue()); diff --git a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdGeneratorEndpointTest.java b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdGeneratorEndpointTest.java index 32f40d11db..c7da669297 100644 --- a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdGeneratorEndpointTest.java +++ b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdGeneratorEndpointTest.java @@ -32,13 +32,13 @@ public CosIdGeneratorEndpointTest() { @Test void shareGenerate() { - var id = cosIdGeneratorEndpoint.shareGenerate(); + long id = cosIdGeneratorEndpoint.shareGenerate(); assertThat(id, greaterThan(0L)); } @Test void generate() { - var id = cosIdGeneratorEndpoint.generate(IdGeneratorProvider.SHARE); + long id = cosIdGeneratorEndpoint.generate(IdGeneratorProvider.SHARE); assertThat(id, greaterThan(0L)); } } \ No newline at end of file diff --git a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdStringGeneratorEndpointTest.java b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdStringGeneratorEndpointTest.java index 404743ef5b..06e80d8984 100644 --- a/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdStringGeneratorEndpointTest.java +++ b/cosid-spring-boot-starter/src/test/java/me/ahoo/cosid/spring/boot/starter/actuate/CosIdStringGeneratorEndpointTest.java @@ -32,13 +32,13 @@ public CosIdStringGeneratorEndpointTest() { @Test void shareGenerate() { - var id = cosIdGeneratorEndpoint.shareGenerateAsString(); + String id = cosIdGeneratorEndpoint.shareGenerateAsString(); assertThat(id, notNullValue()); } @Test void generate() { - var id = cosIdGeneratorEndpoint.generateAsString(IdGeneratorProvider.SHARE); + String id = cosIdGeneratorEndpoint.generateAsString(IdGeneratorProvider.SHARE); assertThat(id, notNullValue()); } } \ No newline at end of file diff --git a/cosid-spring-data-jdbc/src/test/java/me/ahoo/cosid/spring/data/jdbc/CosIdBeforeConvertCallbackTest.java b/cosid-spring-data-jdbc/src/test/java/me/ahoo/cosid/spring/data/jdbc/CosIdBeforeConvertCallbackTest.java index 326e25a13e..26d1c4c3ae 100644 --- a/cosid-spring-data-jdbc/src/test/java/me/ahoo/cosid/spring/data/jdbc/CosIdBeforeConvertCallbackTest.java +++ b/cosid-spring-data-jdbc/src/test/java/me/ahoo/cosid/spring/data/jdbc/CosIdBeforeConvertCallbackTest.java @@ -34,7 +34,7 @@ class CosIdBeforeConvertCallbackTest { private final CosIdBeforeConvertCallback cosIdBeforeConvertCallback; public CosIdBeforeConvertCallbackTest() { - var fieldDefinitionParser = new CompositeFieldDefinitionParser(Arrays.asList(AnnotationDefinitionParser.INSTANCE, IdAnnotationDefinitionParser.INSTANCE)); + CompositeFieldDefinitionParser fieldDefinitionParser = new CompositeFieldDefinitionParser(Arrays.asList(AnnotationDefinitionParser.INSTANCE, IdAnnotationDefinitionParser.INSTANCE)); DefaultAccessorParser accessorParser = new DefaultAccessorParser(fieldDefinitionParser); CosIdAccessorRegistry accessorRegistry = new DefaultAccessorRegistry(accessorParser); cosIdBeforeConvertCallback = new CosIdBeforeConvertCallback(accessorRegistry); @@ -42,7 +42,7 @@ public CosIdBeforeConvertCallbackTest() { @Test void onBeforeConvertIfId() { - var entity = new IdEntity(); + IdEntity entity = new IdEntity(); DefaultIdGeneratorProvider.INSTANCE.setShare(MockIdGenerator.INSTANCE); cosIdBeforeConvertCallback.onBeforeConvert(entity); assertThat(entity.getId(), not(0)); @@ -50,7 +50,7 @@ void onBeforeConvertIfId() { @Test void onBeforeConvertIfCosId() { - var entity = new CosIdEntity(); + CosIdEntity entity = new CosIdEntity(); DefaultIdGeneratorProvider.INSTANCE.setShare(MockIdGenerator.INSTANCE); cosIdBeforeConvertCallback.onBeforeConvert(entity); assertThat(entity.getId(), not(0)); @@ -58,7 +58,7 @@ void onBeforeConvertIfCosId() { @Test void onBeforeConvertIfNotFound() { - var entity = new NotFoundEntity(); + NotFoundEntity entity = new NotFoundEntity(); DefaultIdGeneratorProvider.INSTANCE.setShare(MockIdGenerator.INSTANCE); cosIdBeforeConvertCallback.onBeforeConvert(entity); assertThat(entity.getId(), equalTo(0L)); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9dead90ce0..26d8cca97f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,15 +1,15 @@ [versions] # libraries -springBoot = "3.3.1" -springCloud = "2023.0.2" +springBoot = "2.7.12" +springCloud = "2021.0.7" okhttp = "4.12.0" testcontainers = "1.19.8" guava = "33.2.1-jre" mybatis = "3.5.16" mybatisSpringBoot = "3.0.3" -junitPioneer = "2.2.0" +junitPioneer = "1.9.1" axon = "4.9.4" -flowable = "7.0.1" +flowable = "6.8.1" activiti = "7.0.0.SR1" springDoc = "2.6.0" hamcrest = "2.2"