统一工具类命名规则。

dev
ZhouXY108 2024-04-03 16:20:41 +08:00
parent 09b5b1e0f3
commit cc34af04c2
12 changed files with 37 additions and 74 deletions

View File

@ -30,7 +30,7 @@ import javax.annotation.Nullable;
import com.google.common.annotations.Beta; import com.google.common.annotations.Beta;
import xyz.zhouxy.plusone.commons.util.ConcurrentHashMapUtil; import xyz.zhouxy.plusone.commons.util.ConcurrentHashMapTools;
@Beta @Beta
public abstract class AbstractMapWrapper<K, V, T extends AbstractMapWrapper<K, V, T>> { public abstract class AbstractMapWrapper<K, V, T extends AbstractMapWrapper<K, V, T>> {
@ -130,7 +130,7 @@ public abstract class AbstractMapWrapper<K, V, T extends AbstractMapWrapper<K, V
public final V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) { public final V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
if (this.map instanceof ConcurrentHashMap) { if (this.map instanceof ConcurrentHashMap) {
return ConcurrentHashMapUtil.computeIfAbsent( return ConcurrentHashMapTools.computeIfAbsent(
(ConcurrentHashMap<K, V>) this.map, key, mappingFunction); (ConcurrentHashMap<K, V>) this.map, key, mappingFunction);
} else { } else {
return this.map.computeIfAbsent(key, mappingFunction); return this.map.computeIfAbsent(key, mappingFunction);

View File

@ -23,7 +23,7 @@ import java.util.function.Function;
import javax.annotation.concurrent.ThreadSafe; import javax.annotation.concurrent.ThreadSafe;
import xyz.zhouxy.plusone.commons.base.JRE; import xyz.zhouxy.plusone.commons.base.JRE;
import xyz.zhouxy.plusone.commons.util.ConcurrentHashMapUtil; import xyz.zhouxy.plusone.commons.util.ConcurrentHashMapTools;
/** /**
* SafeConcurrentHashMap * SafeConcurrentHashMap
@ -35,7 +35,7 @@ import xyz.zhouxy.plusone.commons.util.ConcurrentHashMapUtil;
* @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a> * @author <a href="http://zhouxy.xyz:3000/ZhouXY108">ZhouXY</a>
* @since 1.0 * @since 1.0
* @see ConcurrentHashMap * @see ConcurrentHashMap
* @see ConcurrentHashMapUtil#computeIfAbsentForJava8(ConcurrentHashMap, Object, Function) * @see ConcurrentHashMapTools#computeIfAbsentForJava8(ConcurrentHashMap, Object, Function)
*/ */
@ThreadSafe @ThreadSafe
public class SafeConcurrentHashMap<K, V> extends ConcurrentHashMap<K, V> { public class SafeConcurrentHashMap<K, V> extends ConcurrentHashMap<K, V> {
@ -115,7 +115,7 @@ public class SafeConcurrentHashMap<K, V> extends ConcurrentHashMap<K, V> {
@Override @Override
public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) { public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
return JRE.isJava8() return JRE.isJava8()
? ConcurrentHashMapUtil.computeIfAbsentForJava8(this, key, mappingFunction) ? ConcurrentHashMapTools.computeIfAbsentForJava8(this, key, mappingFunction)
: super.computeIfAbsent(key, mappingFunction); : super.computeIfAbsent(key, mappingFunction);
} }
} }

View File

@ -23,7 +23,7 @@ import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import xyz.zhouxy.plusone.commons.util.RegexUtil; import xyz.zhouxy.plusone.commons.util.RegexTools;
/** /**
* *
@ -38,7 +38,7 @@ public abstract class ValidatableStringRecord
protected ValidatableStringRecord(String value, Pattern pattern) { protected ValidatableStringRecord(String value, Pattern pattern) {
Preconditions.checkNotNull(pattern, "The pattern must not be null."); Preconditions.checkNotNull(pattern, "The pattern must not be null.");
Preconditions.checkArgument(StringUtils.isNotBlank(value), "The value must be has text."); Preconditions.checkArgument(StringUtils.isNotBlank(value), "The value must be has text.");
Preconditions.checkArgument(RegexUtil.matches(value, pattern)); Preconditions.checkArgument(RegexTools.matches(value, pattern));
this.value = value; this.value = value;
} }

View File

@ -24,7 +24,7 @@ import xyz.zhouxy.plusone.commons.base.JRE;
import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap; import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap;
/** /**
* ConcurrentHashMapUtil * ConcurrentHashMapTools
* *
* <p> * <p>
* Java 8 {@link ConcurrentHashMap#computeIfAbsent(Object, Function)} bug * Java 8 {@link ConcurrentHashMap#computeIfAbsent(Object, Function)} bug
@ -38,9 +38,10 @@ import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap;
* @see ConcurrentHashMap * @see ConcurrentHashMap
* @see SafeConcurrentHashMap * @see SafeConcurrentHashMap
*/ */
public class ConcurrentHashMapUtil { public class ConcurrentHashMapTools {
public static <K, V> V computeIfAbsent(ConcurrentHashMap<K, V> map, final K key, public static <K, V> V computeIfAbsent(
ConcurrentHashMap<K, V> map, final K key, // NOSONAR
final Function<? super K, ? extends V> mappingFunction) { final Function<? super K, ? extends V> mappingFunction) {
Objects.requireNonNull(map, "map"); Objects.requireNonNull(map, "map");
return JRE.isJava8() return JRE.isJava8()
@ -48,7 +49,8 @@ public class ConcurrentHashMapUtil {
: map.computeIfAbsent(key, mappingFunction); : map.computeIfAbsent(key, mappingFunction);
} }
public static <K, V> V computeIfAbsentForJava8(ConcurrentHashMap<K, V> map, final K key, public static <K, V> V computeIfAbsentForJava8(
ConcurrentHashMap<K, V> map, final K key, // NOSONAR
final Function<? super K, ? extends V> mappingFunction) { final Function<? super K, ? extends V> mappingFunction) {
Objects.requireNonNull(key); Objects.requireNonNull(key);
Objects.requireNonNull(mappingFunction); Objects.requireNonNull(mappingFunction);
@ -66,7 +68,7 @@ public class ConcurrentHashMapUtil {
return v; return v;
} }
private ConcurrentHashMapUtil() { private ConcurrentHashMapTools() {
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }
} }

View File

@ -20,7 +20,7 @@ import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap;
import xyz.zhouxy.plusone.commons.collection.MapWrapper; import xyz.zhouxy.plusone.commons.collection.MapWrapper;
public class DateTimeUtil { public class DateTimeTools {
private static final MapWrapper<String, DateTimeFormatter> DATE_TIME_FORMATTER_CACHE = MapWrapper private static final MapWrapper<String, DateTimeFormatter> DATE_TIME_FORMATTER_CACHE = MapWrapper
.<String, DateTimeFormatter>wrap(new SafeConcurrentHashMap<>()) .<String, DateTimeFormatter>wrap(new SafeConcurrentHashMap<>())
@ -325,7 +325,7 @@ public class DateTimeUtil {
return org.joda.time.DateTimeZone.forID(zone.getId()); return org.joda.time.DateTimeZone.forID(zone.getId());
} }
private DateTimeUtil() { private DateTimeTools() {
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }
} }

View File

@ -27,9 +27,9 @@ import com.google.common.base.Preconditions;
* *
* @author <a href="https://gitee.com/zhouxy108">ZhouXY</a> * @author <a href="https://gitee.com/zhouxy108">ZhouXY</a>
*/ */
public final class EnumUtil { public final class EnumTools {
private EnumUtil() { private EnumTools() {
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }

View File

@ -17,7 +17,7 @@
package xyz.zhouxy.plusone.commons.util; package xyz.zhouxy.plusone.commons.util;
/** /**
* NumberUtil * Numbers
* *
* @author <a href="https://gitee.com/zhouxy108">ZhouXY</a> * @author <a href="https://gitee.com/zhouxy108">ZhouXY</a>
*/ */

View File

@ -38,7 +38,7 @@ import com.google.common.annotations.Beta;
* @see OptionalLong * @see OptionalLong
* @see OptionalDouble * @see OptionalDouble
*/ */
public class OptionalUtil { public class OptionalTools {
/** /**
* {@link Integer} {@link OptionalInt}not null * {@link Integer} {@link OptionalInt}not null
@ -149,7 +149,7 @@ public class OptionalUtil {
return optionalObj.isPresent() ? optionalObj.getAsDouble() : null; return optionalObj.isPresent() ? optionalObj.getAsDouble() : null;
} }
private OptionalUtil() { private OptionalTools() {
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }
} }

View File

@ -2,8 +2,8 @@ package xyz.zhouxy.plusone.commons.util;
import java.security.SecureRandom; import java.security.SecureRandom;
public final class RandomUtil { public final class RandomTools {
private RandomUtil() { private RandomTools() {
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }

View File

@ -35,7 +35,7 @@ import xyz.zhouxy.plusone.commons.collection.SafeConcurrentHashMap;
* @author ZhouXY * @author ZhouXY
* *
*/ */
public final class RegexUtil { public final class RegexTools {
private static final int DEFAULT_CACHE_INITIAL_CAPACITY = 64; private static final int DEFAULT_CACHE_INITIAL_CAPACITY = 64;
private static final int MAX_CACHE_SIZE = 256; private static final int MAX_CACHE_SIZE = 256;
@ -330,7 +330,7 @@ public final class RegexUtil {
@Nonnull @Nonnull
private static Pattern[] getAndCachePatternsInternal(@Nonnull final String[] patterns) { private static Pattern[] getAndCachePatternsInternal(@Nonnull final String[] patterns) {
return Arrays.stream(patterns) return Arrays.stream(patterns)
.map(RegexUtil::getAndCachePatternInternal) .map(RegexTools::getAndCachePatternInternal)
.toArray(Pattern[]::new); .toArray(Pattern[]::new);
} }
@ -344,7 +344,7 @@ public final class RegexUtil {
@Nonnull @Nonnull
private static Pattern[] getPatternsInternal(@Nonnull final String[] patterns) { private static Pattern[] getPatternsInternal(@Nonnull final String[] patterns) {
return Arrays.stream(patterns) return Arrays.stream(patterns)
.map(RegexUtil::getPatternInternal) .map(RegexTools::getPatternInternal)
.toArray(Pattern[]::new); .toArray(Pattern[]::new);
} }
@ -389,7 +389,7 @@ public final class RegexUtil {
return Arrays.stream(array).allMatch(Objects::nonNull); return Arrays.stream(array).allMatch(Objects::nonNull);
} }
private RegexUtil() { private RegexTools() {
// 不允许实例化 // 不允许实例化
throw new IllegalStateException("Utility class"); throw new IllegalStateException("Utility class");
} }

View File

@ -11,40 +11,40 @@ import org.junit.jupiter.api.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
class DateTimeUtilTests { class DateTimeToolsTests {
private static final Logger log = LoggerFactory.getLogger(DateTimeUtilTests.class); private static final Logger log = LoggerFactory.getLogger(DateTimeToolsTests.class);
@Test @Test
void testLocalNowStr() { void testLocalNowStr() {
log.info(DateTimeUtil.nowStr("yyyy/MM/dd HH:mm:ss.SSS")); log.info(DateTimeTools.nowStr("yyyy/MM/dd HH:mm:ss.SSS"));
} }
@Test @Test
void testToJoda() { void testToJoda() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
log.info("now: {}", now); log.info("now: {}", now);
org.joda.time.LocalDateTime now2 = DateTimeUtil.toJodaLocalDateTime(now); org.joda.time.LocalDateTime now2 = DateTimeTools.toJodaLocalDateTime(now);
log.info("now2: {}", now2); log.info("now2: {}", now2);
} }
@Test @Test
void testToInstant() { void testToInstant() {
Instant now = DateTimeUtil.toInstant(System.currentTimeMillis()); Instant now = DateTimeTools.toInstant(System.currentTimeMillis());
String str = DateTimeUtil.toString("yy-M-d HH:mm:ss.SSS", now); String str = DateTimeTools.toString("yy-M-d HH:mm:ss.SSS", now);
log.info(str); log.info(str);
} }
@Test @Test
void testToJodaDateTime() { void testToJodaDateTime() {
DateTime jodaDateTime = DateTimeUtil.toJodaDateTime(Instant.now(), ZoneId.of("+08:00")); DateTime jodaDateTime = DateTimeTools.toJodaDateTime(Instant.now(), ZoneId.of("+08:00"));
log.info("jodaDateTime: {}", jodaDateTime); log.info("jodaDateTime: {}", jodaDateTime);
} }
@Test @Test
void test() { void test() {
Instant now = Instant.now(); Instant now = Instant.now();
DateTime jodaDateTime = DateTimeUtil.toJodaDateTime(now, ZoneId.of("America/New_York")); DateTime jodaDateTime = DateTimeTools.toJodaDateTime(now, ZoneId.of("America/New_York"));
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS"); DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
log.info(formatter.print(jodaDateTime)); log.info(formatter.print(jodaDateTime));
log.info(jodaDateTime.getZone().toString()); log.info(jodaDateTime.getZone().toString());
@ -52,7 +52,7 @@ class DateTimeUtilTests {
log.info("=========================================="); log.info("==========================================");
org.joda.time.Instant instant = new org.joda.time.Instant(System.currentTimeMillis() - 500000); org.joda.time.Instant instant = new org.joda.time.Instant(System.currentTimeMillis() - 500000);
log.info(instant.toString()); log.info(instant.toString());
log.info(DateTimeUtil.toJavaInstant(instant).toString()); log.info(DateTimeTools.toJavaInstant(instant).toString());
log.info(DateTimeUtil.toZonedDateTime(instant, DateTimeZone.forID("America/New_York")).toString()); log.info(DateTimeTools.toZonedDateTime(instant, DateTimeZone.forID("America/New_York")).toString());
} }
} }

View File

@ -1,39 +0,0 @@
package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class NumberUtilTest {
private static final Logger log = LoggerFactory.getLogger(NumberUtilTest.class);
@Test
void testSum() {
long result = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
result += Short.MAX_VALUE;
}
log.info("Integer.MAX_VALUE: {}", Integer.MAX_VALUE);
log.info("result: {}", result);
assertFalse(Integer.MAX_VALUE > result);
result = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
result += Short.MAX_VALUE;
}
log.info("Long.MAX_VALUE: {}", Long.MAX_VALUE);
log.info("result: {}", result);
assertTrue(Long.MAX_VALUE > result);
result = 0;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
result += Integer.MAX_VALUE;
}
log.info("Long.MAX_VALUE: {}", Long.MAX_VALUE);
log.info("result: {}", result);
assertTrue(Long.MAX_VALUE > result);
}
}