From 4d488403cae8d74e77c8b33ae448d025a8b682ee Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Fri, 29 Apr 2022 00:37:14 +0300 Subject: [PATCH] =?UTF-8?q?Assert=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BD=D0=B0=20Inspector?= =?UTF-8?q?.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=B2=20NotFoundException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- haiti-bom/pom.xml | 23 +- haiti-context/pom.xml | 20 +- .../haiti/context/domain/ExistsContainer.java | 9 +- .../haiti/context/page/impl/SortImpl.java | 2 +- haiti-core/pom.xml | 20 +- .../SimpleManagerRepositoryMap.java | 16 +- .../core/service/AbstractFilterService.java | 10 +- .../core/service/AbstractMultipleService.java | 10 +- .../core/service/AbstractPagingService.java | 4 +- .../service/AbstractSimpleManagerService.java | 24 ++- .../core/service/AbstractSimpleService.java | 8 +- haiti-exception/pom.xml | 20 +- .../context/exception/NotFoundException.java | 8 +- haiti-filter/pom.xml | 16 +- haiti-utils/pom.xml | 20 +- .../dev/struchkov/haiti/utils/Assert.java | 117 ----------- .../dev/struchkov/haiti/utils/Inspector.java | 198 ++++++++++++++++++ .../struchkov/haiti/utils/ObjectUtils.java | 15 +- pom.xml | 30 ++- 19 files changed, 297 insertions(+), 273 deletions(-) delete mode 100644 haiti-utils/src/main/java/dev/struchkov/haiti/utils/Assert.java create mode 100644 haiti-utils/src/main/java/dev/struchkov/haiti/utils/Inspector.java diff --git a/haiti-bom/pom.xml b/haiti-bom/pom.xml index 29c4e47..ae42376 100644 --- a/haiti-bom/pom.xml +++ b/haiti-bom/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti-bom - 1.0.0 + ${revision} pom Haiti BOM @@ -30,15 +30,19 @@ UTF-8 UTF-8 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 + 1.0.1 + + ${revision} + ${revision} + ${revision} + ${revision} + ${revision} 0.0.4 0.0.4 + 0.0.4 + 0.0.1 4.3.1 2.6.1 @@ -49,6 +53,7 @@ 7.16.3 1.7.33 1.0.1 + 23.0.0 1.6.8 3.9.0 @@ -152,6 +157,12 @@ provided true + + + org.jetbrains + annotations + ${jetbrains.annotations.ver} + diff --git a/haiti-context/pom.xml b/haiti-context/pom.xml index 8144994..b0b073d 100644 --- a/haiti-context/pom.xml +++ b/haiti-context/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} haiti-context @@ -17,8 +17,6 @@ https://github.com/haiti-projects/haiti-framework - false - 11 ${java.version} ${java.version} @@ -37,20 +35,4 @@ - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.sonatype.plugins - nexus-staging-maven-plugin - - ${skip.deploy} - - - - - \ No newline at end of file diff --git a/haiti-context/src/main/java/dev/struchkov/haiti/context/domain/ExistsContainer.java b/haiti-context/src/main/java/dev/struchkov/haiti/context/domain/ExistsContainer.java index 16c000c..b6d6b49 100644 --- a/haiti-context/src/main/java/dev/struchkov/haiti/context/domain/ExistsContainer.java +++ b/haiti-context/src/main/java/dev/struchkov/haiti/context/domain/ExistsContainer.java @@ -1,10 +1,10 @@ package dev.struchkov.haiti.context.domain; -import dev.struchkov.haiti.utils.Assert; - import java.util.Collection; import java.util.Collections; +import static dev.struchkov.haiti.utils.Inspector.isNotNull; + /** * Контейнер для возврата результата сервисных методов exists. * @@ -23,12 +23,12 @@ public class ExistsContainer { } public static ExistsContainer allFind(Collection container) { - Assert.isNotNull(container); + isNotNull(container); return new ExistsContainer<>(container, true, Collections.emptyList()); } public static ExistsContainer notAllFind(Collection container, Collection idNoFound) { - Assert.isNotNull(container, idNoFound); + isNotNull(container, idNoFound); return new ExistsContainer<>(container, false, idNoFound); } @@ -43,4 +43,5 @@ public class ExistsContainer { public Collection getIdNoFound() { return idNoFound; } + } diff --git a/haiti-context/src/main/java/dev/struchkov/haiti/context/page/impl/SortImpl.java b/haiti-context/src/main/java/dev/struchkov/haiti/context/page/impl/SortImpl.java index 5de80df..662e277 100644 --- a/haiti-context/src/main/java/dev/struchkov/haiti/context/page/impl/SortImpl.java +++ b/haiti-context/src/main/java/dev/struchkov/haiti/context/page/impl/SortImpl.java @@ -3,7 +3,7 @@ package dev.struchkov.haiti.context.page.impl; import dev.struchkov.haiti.context.enums.TypeSort; import dev.struchkov.haiti.context.page.Sort; -import static dev.struchkov.haiti.utils.Assert.isNotNull; +import static dev.struchkov.haiti.utils.Inspector.isNotNull; public class SortImpl implements Sort { diff --git a/haiti-core/pom.xml b/haiti-core/pom.xml index b5f1edc..ccf6b6d 100644 --- a/haiti-core/pom.xml +++ b/haiti-core/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} haiti-core @@ -17,8 +17,6 @@ https://github.com/haiti-projects/haiti-framework - false - 11 ${java.version} ${java.version} @@ -38,20 +36,4 @@ - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.sonatype.plugins - nexus-staging-maven-plugin - - ${skip.deploy} - - - - - \ No newline at end of file diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/repository/SimpleManagerRepositoryMap.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/repository/SimpleManagerRepositoryMap.java index 9be5879..f69fa1b 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/repository/SimpleManagerRepositoryMap.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/repository/SimpleManagerRepositoryMap.java @@ -4,7 +4,7 @@ import dev.struchkov.haiti.context.domain.BasicEntity; import dev.struchkov.haiti.context.page.Pagination; import dev.struchkov.haiti.context.page.Sheet; import dev.struchkov.haiti.context.repository.SimpleManagerRepository; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; import java.util.Collection; import java.util.HashMap; @@ -22,7 +22,7 @@ public class SimpleManagerRepositoryMap> implements @Override public T save(T accessTarget) { - Assert.isNotNull(accessTarget); + Inspector.isNotNull(accessTarget); accessTarget.setId(key); map.put(key, accessTarget); key++; @@ -31,25 +31,25 @@ public class SimpleManagerRepositoryMap> implements @Override public Optional findById(Long id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return Optional.ofNullable(map.get(id)); } @Override public boolean existsById(Long id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return map.containsKey(id); } @Override public void deleteById(Long id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); map.remove(id); } @Override public List saveAll(Collection accessTargets) { - Assert.isNotNull(accessTargets); + Inspector.isNotNull(accessTargets); return accessTargets.stream() .map(this::save) .collect(Collectors.toList()); @@ -57,13 +57,13 @@ public class SimpleManagerRepositoryMap> implements @Override public void deleteAllById(Collection accessTargets) { - Assert.isNotNull(accessTargets); + Inspector.isNotNull(accessTargets); accessTargets.forEach(map::remove); } @Override public List findAllById(Collection ids) { - Assert.isNotNull(ids); + Inspector.isNotNull(ids); return ids.stream() .map(map::get) .collect(Collectors.toList()); diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractFilterService.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractFilterService.java index e64c30b..d0f8b06 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractFilterService.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractFilterService.java @@ -5,7 +5,7 @@ import dev.struchkov.haiti.context.page.Sheet; import dev.struchkov.haiti.context.service.simple.FilterService; import dev.struchkov.haiti.filter.Filter; import dev.struchkov.haiti.filter.FilterOperation; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; import java.util.Optional; @@ -19,25 +19,25 @@ public abstract class AbstractFilterService implements FilterService< @Override public Sheet getAll(F filter, Pagination pagination) { - Assert.isNotNull(filter); + Inspector.isNotNull(filter); return filterOperation.findAll(createFilter(filter), pagination); } @Override public Optional getFirst(F filter) { - Assert.isNotNull(filter); + Inspector.isNotNull(filter); return filterOperation.findFirst(createFilter(filter)); } @Override public boolean exists(F filter) { - Assert.isNotNull(filter); + Inspector.isNotNull(filter); return filterOperation.exists(createFilter(filter)); } @Override public long count(F filter) { - Assert.isNotNull(filter); + Inspector.isNotNull(filter); return filterOperation.count(createFilter(filter)); } diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractMultipleService.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractMultipleService.java index 432253f..e07aa1e 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractMultipleService.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractMultipleService.java @@ -6,7 +6,7 @@ import dev.struchkov.haiti.context.repository.simple.MultipleOperation; import dev.struchkov.haiti.context.service.simple.MultipleService; import dev.struchkov.haiti.context.service.simple.SimpleService; import dev.struchkov.haiti.core.util.ServiceOperation; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; import java.util.Collection; import java.util.List; @@ -24,25 +24,25 @@ public abstract class AbstractMultipleService, K @Override public void deleteAllById(Collection ids) { - Assert.isNotNull(ids); + Inspector.isNotNull(ids); multipleOperation.deleteAllById(ids); } @Override public List createAll(Collection entities) { - Assert.isNotNull(entities); + Inspector.isNotNull(entities); return entities.stream().map(simpleService::create).collect(Collectors.toList()); } @Override public List updateAll(Collection entities) { - Assert.isNotNull(entities); + Inspector.isNotNull(entities); return entities.stream().map(simpleService::update).collect(Collectors.toList()); } @Override public ExistsContainer existsById(Collection ids) { - Assert.isNotNull(ids); + Inspector.isNotNull(ids); return ServiceOperation.existsContainerById(multipleOperation, ids); } diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractPagingService.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractPagingService.java index effb254..6a0fa03 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractPagingService.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractPagingService.java @@ -4,7 +4,7 @@ import dev.struchkov.haiti.context.page.Pagination; import dev.struchkov.haiti.context.page.Sheet; import dev.struchkov.haiti.context.repository.simple.PagingOperation; import dev.struchkov.haiti.context.service.simple.PagingService; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; public abstract class AbstractPagingService implements PagingService { @@ -16,7 +16,7 @@ public abstract class AbstractPagingService implements PagingService { @Override public Sheet getAll(Pagination pagination) { - Assert.isNotNull(pagination); + Inspector.isNotNull(pagination); return pagingOperation.findAll(pagination); } diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleManagerService.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleManagerService.java index d021844..34d73fb 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleManagerService.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleManagerService.java @@ -8,13 +8,15 @@ import dev.struchkov.haiti.context.page.Sheet; import dev.struchkov.haiti.context.repository.SimpleManagerRepository; import dev.struchkov.haiti.context.service.SimpleManagerService; import dev.struchkov.haiti.core.util.ServiceOperation; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; +import static dev.struchkov.haiti.context.exception.NotFoundException.notFoundException; + public abstract class AbstractSimpleManagerService, Key> implements SimpleManagerService { protected final SimpleManagerRepository repository; @@ -25,55 +27,55 @@ public abstract class AbstractSimpleManagerService ids) { - Assert.isNotNull(ids); + Inspector.isNotNull(ids); ServiceOperation.deleteAllById(repository, ids); } @Override public Sheet getAll(Pagination pagination) { - Assert.isNotNull(pagination); + Inspector.isNotNull(pagination); return ServiceOperation.getAll(repository, pagination); } @Override public Optional getById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return ServiceOperation.getById(repository, id); } @Override public Entity getByIdOrThrow(Key id) { - Assert.isNotNull(id); - return getById(id).orElseThrow(NotFoundException.supplier("Объект не найден. Идентификатор: ", id)); + Inspector.isNotNull(id); + return getById(id).orElseThrow(notFoundException("Объект не найден. Идентификатор: ", id)); } @Override public boolean existsById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return ServiceOperation.existsById(repository, id); } @Override public void deleteById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); ServiceOperation.deleteById(repository, id); } @Override public List createAll(Collection entities) { - Assert.isNotNull(entities); + Inspector.isNotNull(entities); return entities.stream().map(this::create).collect(Collectors.toList()); } @Override public List updateAll(Collection entities) { - Assert.isNotNull(entities); + Inspector.isNotNull(entities); return entities.stream().map(this::update).collect(Collectors.toList()); } @Override public ExistsContainer existsById(Collection ids) { - Assert.isNotNull(ids); + Inspector.isNotNull(ids); return ServiceOperation.existsContainerById(repository, ids); } diff --git a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleService.java b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleService.java index 5e3ae56..fd30b60 100644 --- a/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleService.java +++ b/haiti-core/src/main/java/dev/struchkov/haiti/core/service/AbstractSimpleService.java @@ -3,7 +3,7 @@ package dev.struchkov.haiti.core.service; import dev.struchkov.haiti.context.repository.simple.CrudOperation; import dev.struchkov.haiti.context.service.simple.SimpleService; import dev.struchkov.haiti.core.util.ServiceOperation; -import dev.struchkov.haiti.utils.Assert; +import dev.struchkov.haiti.utils.Inspector; import java.util.Optional; @@ -17,19 +17,19 @@ public abstract class AbstractSimpleService implements SimpleServic @Override public Optional getById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return ServiceOperation.getById(crudOperation, id); } @Override public boolean existsById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); return ServiceOperation.existsById(crudOperation, id); } @Override public void deleteById(Key id) { - Assert.isNotNull(id); + Inspector.isNotNull(id); ServiceOperation.deleteById(crudOperation, id); } diff --git a/haiti-exception/pom.xml b/haiti-exception/pom.xml index ecc6dc9..ff3d9c6 100644 --- a/haiti-exception/pom.xml +++ b/haiti-exception/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} haiti-exception @@ -17,8 +17,6 @@ https://github.com/haiti-projects/haiti-framework - false - 11 ${java.version} ${java.version} @@ -26,20 +24,4 @@ UTF-8 - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.sonatype.plugins - nexus-staging-maven-plugin - - ${skip.deploy} - - - - - \ No newline at end of file diff --git a/haiti-exception/src/main/java/dev/struchkov/haiti/context/exception/NotFoundException.java b/haiti-exception/src/main/java/dev/struchkov/haiti/context/exception/NotFoundException.java index e4ca595..cea8645 100644 --- a/haiti-exception/src/main/java/dev/struchkov/haiti/context/exception/NotFoundException.java +++ b/haiti-exception/src/main/java/dev/struchkov/haiti/context/exception/NotFoundException.java @@ -14,8 +14,12 @@ public class NotFoundException extends BasicException { super(message); } - public static Supplier supplier(String message, Object... objects) { - return () -> new NotFoundException(MessageFormat.format(message, objects)); + public NotFoundException(String message, Object... args) { + super(MessageFormat.format(message, args)); + } + + public static Supplier notFoundException(String message, Object... args) { + return () -> new NotFoundException(message, args); } } diff --git a/haiti-filter/pom.xml b/haiti-filter/pom.xml index 1c576a1..73d2b08 100644 --- a/haiti-filter/pom.xml +++ b/haiti-filter/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} haiti-filter @@ -17,8 +17,6 @@ https://github.com/haiti-projects/haiti-framework - false - 11 ${java.version} ${java.version} @@ -33,16 +31,4 @@ - - - - org.sonatype.plugins - nexus-staging-maven-plugin - - ${skip.deploy} - - - - - \ No newline at end of file diff --git a/haiti-utils/pom.xml b/haiti-utils/pom.xml index 344a13e..2234cac 100644 --- a/haiti-utils/pom.xml +++ b/haiti-utils/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} Haiti Utils @@ -17,8 +17,6 @@ ${haiti.utils.ver} - false - 11 ${java.version} ${java.version} @@ -33,20 +31,4 @@ - - - - org.apache.maven.plugins - maven-compiler-plugin - - - org.sonatype.plugins - nexus-staging-maven-plugin - - ${skip.deploy} - - - - - \ No newline at end of file diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Assert.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Assert.java deleted file mode 100644 index 454654b..0000000 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Assert.java +++ /dev/null @@ -1,117 +0,0 @@ -package dev.struchkov.haiti.utils; - -import java.util.function.Supplier; - -import static dev.struchkov.haiti.utils.Exceptions.utilityClass; - -/** - * Утилитарный класс для различных проверок. - * - * @author upagge 06.09.2020 - */ -public final class Assert { - - private Assert() { - utilityClass(); - } - - /** - * Проверка на null значение с возвращением исключения, если объект не null. - * - * @param object Проверяемый объект - * @param exception Возвращаемое исключение - */ - public static void isNull(Object object, Supplier exception) { - if (object != null) { - throw exception.get(); - } - } - - /** - * Проверяет множество объектов на null. Если хотябы один объект null, то будет выброшено исключение - * - * @param exception исключение, которое необходимо выбросить - * @param objects проверяемое множество объектов - */ - public static void isAnyNotNull(Supplier exception, Object... objects) { - for (Object object : objects) { - if (object == null) { - throw exception.get(); - } - } - } - - /** - * Проверка на null значение с возвращением исключения, если объект null. - * - * @param object Проверяемый объект - * @param exception Возвращаемое исключение - */ - public static void isNotNull(Object object, Supplier exception) { - if (object == null) { - throw exception.get(); - } - } - - /** - * Проверка на null значение с возвращением исключения, если объект null. - * - * @param object Проверяемый объект - */ - public static void isNotNull(Object object) { - if (object == null) { - throw new NullPointerException("Object cannot be null"); - } - } - - /** - * Проверка на null значение с возвращением исключения, если объект null. - * - * @param objects Проверяемый объект - */ - public static void isNotNull(Object... objects) { - for (Object o : objects) { - if (o == null) { - throw new NullPointerException("Object cannot be null"); - } - } - } - - /** - * Проверка на true значение с возвращением исключения, если flag не true. - * - * @param flag Проверяемое значение - * @param exception Возвращаемое исключение - */ - public static void isTrue(boolean flag, Supplier exception) { - if (!flag) { - throw exception.get(); - } - } - - /** - * Проверка на false значение с возвращением исключения, если flag не false. - * - * @param flag Проверяемое значение - * @param exception Возвращаемое исключение - */ - public static void isFalse(boolean flag, Supplier exception) { - if (flag) { - throw exception.get(); - } - } - - - public static final class Utils { - - public Utils() { - utilityClass(); - } - - public static Supplier nullPointer(String fieldName) { - return () -> new NullPointerException(fieldName + " is marked non-null but is null"); - } - - } - -} diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Inspector.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Inspector.java new file mode 100644 index 0000000..3bd7b73 --- /dev/null +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/Inspector.java @@ -0,0 +1,198 @@ +package dev.struchkov.haiti.utils; + +import java.util.Collection; +import java.util.function.Supplier; + +import static dev.struchkov.haiti.utils.Exceptions.utilityClass; + +/** + * Утилитарный класс для различных проверок. + * + * @author upagge 06.09.2020 + */ +public final class Inspector { + + private Inspector() { + utilityClass(); + } + + /** + * Проверка на null значение с возвращением исключения, если объект не null. + * + * @param object Проверяемый объект + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isNull(Object object, Supplier exception) { + if (object != null) throw exception.get(); + } + + /** + * Проверяет множество объектов на null. Если хотябы один объект null, то будет выброшено исключение + * + * @param exception исключение, которое необходимо выбросить + * @param objects проверяемое множество объектов + * @throws RuntimeException + */ + public static void isAnyNotNull(Supplier exception, Object... objects) { + for (Object object : objects) + if (object == null) throw exception.get(); + } + + /** + * Проверка на null значение с возвращением исключения, если объект null. + * + * @param object Проверяемый объект + * @param exception Возвращаемое исключение + */ + public static void isNotNull(Object object, Supplier exception) { + if (object == null) throw exception.get(); + } + + /** + * Проверка на null значение с возвращением исключения, если объект null. + * + * @param object Проверяемый объект + * @throws NullPointerException + */ + public static void isNotNull(Object object) { + if (object == null) throw new NullPointerException("Object cannot be null"); + } + + /** + * Проверка на null значение с возвращением исключения, если объект null. + * + * @param objects Проверяемый объект + * @throws NullPointerException + */ + public static void isNotNull(Object... objects) { + for (Object o : objects) + if (o == null) throw new NullPointerException("Object cannot be null"); + } + + /** + * Проверка на true значение с возвращением исключения, если flag не true. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isTrue(boolean flag, Supplier exception) { + if (!flag) throw exception.get(); + } + + /** + * Проверка на false значение с возвращением исключения, если flag не false. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isFalse(boolean flag, Supplier exception) { + if (flag) throw exception.get(); + } + + /** + * Проверка коллекции на пустоту. + * + * @return false - если коллекция null или пустая, true в противном случае. + */ + public static boolean isNotEmpty(Collection collection) { + return collection != null && !collection.isEmpty(); + } + + /** + * Проверка массива на пустоту + * + * @return false - если массив null или пустой, true в противном случае. + */ + public static boolean isNotEmpty(Object... args) { + if (args == null) { + return false; + } else { + return args.length > 0; + } + } + + /** + * Проверка коллекции на пустоту. + * + * @return true - если коллекция null или пустая, false в противном случае + */ + public static boolean isEmpty(Collection collection) { + return collection == null || collection.isEmpty(); + } + + /** + * Проверка массива на пустоту. + * + * @return true - если массив null или пустой, false в противном случае + */ + public static boolean isEmpty(Object... args) { + return args == null || args.length == 0; + } + + /** + * Проверка коллекции на пустоту. Если коллекция пустая или null, то будет выбрашено исключение. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isNotEmpty(Collection collection, Supplier exception) { + if (isEmpty(collection)) { + throw exception.get(); + } + } + + /** + * Проверка массива на пустоту. Если массив пустой или null, то будет выбрашено исключение. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isNotEmpty(Supplier exception, Object... args) { + if (isEmpty(args)) { + throw exception.get(); + } + } + + /** + * Проверка коллекции на пустоту. Если коллекция не пустая и не null, то будет выбрашено исключение. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isEmpty(Collection collection, Supplier exception) { + if (isNotEmpty(collection)) throw exception.get(); + } + + /** + * Проверка массива на пустоту. Если массив не пустой и не null, то будет выбрашено исключение. + * + * @param exception Возвращаемое исключение + * @throws RuntimeException + */ + public static void isEmpty(Supplier exception, Object... args) { + if (isNotEmpty(args)) throw exception.get(); + } + + /** + * Утилитарный класс. + */ + public static final class Utils { + + private Utils() { + utilityClass(); + } + + /** + * Позволяет указать имя поля/параметра, который был null. + * + * @param fieldName имя поля/параметра + * @throws RuntimeException + */ + public static Supplier nullPointer(String fieldName) { + return () -> new NullPointerException(fieldName + " is marked non-null but is null"); + } + + } + +} diff --git a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/ObjectUtils.java b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/ObjectUtils.java index aa12e69..ab586c6 100644 --- a/haiti-utils/src/main/java/dev/struchkov/haiti/utils/ObjectUtils.java +++ b/haiti-utils/src/main/java/dev/struchkov/haiti/utils/ObjectUtils.java @@ -13,6 +13,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import static dev.struchkov.haiti.utils.Exceptions.utilityClass; +import static dev.struchkov.haiti.utils.Inspector.isNotNull; /** * Утилитарный класс для работы с классами и объектами. @@ -37,8 +38,8 @@ public class ObjectUtils { * @return Значение поля из объекта */ public static Object getFieldValue(Object object, String fieldName) { - Assert.isNotNull(object, fieldName); - int firstNameIndex = fieldName.indexOf("."); + isNotNull(object, fieldName); + final int firstNameIndex = fieldName.indexOf("."); String firstName; if (firstNameIndex != -1) { firstName = fieldName.substring(0, firstNameIndex); @@ -63,8 +64,8 @@ public class ObjectUtils { } public static void setFieldValue(Object object, String fieldName, Object fieldValue) { - Assert.isNotNull(object, fieldName); - int firstNameIndex = fieldName.indexOf("."); + isNotNull(object, fieldName); + final int firstNameIndex = fieldName.indexOf("."); if (firstNameIndex != -1) { final String[] split = fieldName.split("\\."); final String fieldNameToObject = String.join(".", Arrays.copyOf(split, split.length - 1)); @@ -85,7 +86,7 @@ public class ObjectUtils { } } } - Assert.isFalse(flag, () -> new ConvertException("Метод у объекта не найден")); + Inspector.isFalse(flag, () -> new ConvertException("Метод у объекта не найден")); } private static Object convertFieldValue(Object fieldValue, Class parameterType) { @@ -124,7 +125,7 @@ public class ObjectUtils { * @return true если метод является геттером для fieldName, false в противном случае */ public static boolean isGetMethod(String fieldName, Method method) { - Assert.isNotNull(fieldName); + isNotNull(fieldName); return (method.getName().startsWith("get")) && (method.getName().length() == (fieldName.length() + 3)) && method.getName().toLowerCase().endsWith(fieldName.toLowerCase()); @@ -138,7 +139,7 @@ public class ObjectUtils { * @return true если метод является сеттером для fieldName, false в противном случае */ public static boolean isSetMethod(String fieldName, Method method) { - Assert.isNotNull(fieldName); + isNotNull(fieldName); return (method.getName().startsWith("set")) && (method.getName().length() == (fieldName.length() + 3)) && method.getName().toLowerCase().endsWith(fieldName.toLowerCase()); diff --git a/pom.xml b/pom.xml index 42bff95..7247b10 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.haiti haiti - 1.0.0 + ${revision} pom Haiti Framework @@ -39,14 +39,16 @@ UTF-8 UTF-8 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 - 1.0.0 + 1.0.1 + + ${revision} + ${revision} + ${revision} + ${revision} + ${revision} + ${revision} + ${revision} + ${revision} 3.9.0 1.6.8 @@ -60,7 +62,7 @@ dev.struchkov.haiti haiti-bom - 1.0.0 + ${haiti.bom.ver} pom import @@ -138,6 +140,14 @@ org.apache.maven.plugins maven-compiler-plugin + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin +