Добавил новый контейнер ContextKey

This commit is contained in:
Struchkov Mark 2023-02-18 10:31:59 +03:00
parent 9ba77a2f04
commit feaecf7a15
Signed by: upagge
GPG Key ID: D3018BE7BA428CA6
7 changed files with 118 additions and 41 deletions

86
.gitignore vendored
View File

@ -1,14 +1,3 @@
# Created by .ignore support plugin (hsz.mobi)
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
*.class *.class
*.log *.log
*.ctxt *.ctxt
@ -21,31 +10,68 @@ buildNumber.properties
*.tar.gz *.tar.gz
*.rar *.rar
hs_err_pid* hs_err_pid*
.idea/**/workspace.xml replay_pid*
.idea/**/tasks.xml target/
.idea/**/usage.statistics.xml pom.xml.tag
.idea/**/dictionaries pom.xml.releaseBackup
.idea/**/shelf pom.xml.versionsBackup
.idea/**/contentModel.xml pom.xml.next
.idea/**/dataSources/ release.properties
.idea/**/dataSources.ids dependency-reduced-pom.xml
.idea/**/dataSources.local.xml buildNumber.properties
.idea/**/sqlDataSources.xml .mvn/timing.properties
.idea/**/dynamic.xml .mvn/wrapper/maven-wrapper.jar
.idea/**/uiDesigner.xml .project
.idea/**/dbnavigator.xml .classpath
.idea/**/gradle.xml .idea/
.idea/**/libraries
cmake-build-*/ cmake-build-*/
.idea/**/mongoSettings.xml
*.iws *.iws
out/ out/
.idea_modules/ .idea_modules/
atlassian-ide-plugin.xml atlassian-ide-plugin.xml
.idea/replstate.xml
com_crashlytics_export_strings.xml com_crashlytics_export_strings.xml
crashlytics.properties crashlytics.properties
crashlytics-build.properties crashlytics-build.properties
fabric.properties fabric.properties
.idea/httpRequests *~
.idea/caches/build_file_checksums.ser .fuse_hidden*
.directory
.Trash-*
.nfs*
.gradle
**/build/
!src/**/build/
gradle-app.setting
!gradle-wrapper.jar
!gradle-wrapper.properties
.gradletasknamecache
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
*.stackdump
[Dd]esktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

View File

@ -1,6 +1,6 @@
package dev.struchkov.haiti.utils; package dev.struchkov.haiti.utils;
import dev.struchkov.haiti.utils.domain.CompositeUrl; import dev.struchkov.haiti.utils.container.CompositeUrl;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@ -1,9 +1,8 @@
package dev.struchkov.haiti.utils; package dev.struchkov.haiti.utils;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static dev.struchkov.haiti.utils.Checker.checkNotNull;
import static dev.struchkov.haiti.utils.Exceptions.utilityClass; import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
/** /**
@ -13,9 +12,9 @@ import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
*/ */
public final class Strings { public final class Strings {
private static final Set<Character> MD_FORBIDDEN_SYMBOLS = Stream.of( private static final Set<Character> MD_FORBIDDEN_SYMBOLS = Set.of(
'\\', '+', '`', '[', ']', '\"', '~', '*', '#', '=', '_', '>', '<' '\\', '+', '`', '[', ']', '\"', '~', '*', '#', '=', '_', '>', '<'
).collect(Collectors.toSet()); );
private Strings() { private Strings() {
utilityClass(); utilityClass();
@ -23,7 +22,6 @@ public final class Strings {
public static final String EMPTY = ""; public static final String EMPTY = "";
public static final String NEW_LINE = System.getProperty("line.separator"); public static final String NEW_LINE = System.getProperty("line.separator");
public static final String TWO_NEW_LINE = NEW_LINE + NEW_LINE;
public static final String ERR_UTILITY_CLASS = "Нельзя создать объект утилитарного класса"; public static final String ERR_UTILITY_CLASS = "Нельзя создать объект утилитарного класса";
public static final String ERR_OPERATION_NOT_SUPPORTED = "Операция не поддерживается"; public static final String ERR_OPERATION_NOT_SUPPORTED = "Операция не поддерживается";
@ -37,7 +35,7 @@ public final class Strings {
* @return Обрезанная до length количества символов строка * @return Обрезанная до length количества символов строка
*/ */
public static String cutoff(String string, int length) { public static String cutoff(String string, int length) {
if (string != null) { if (checkNotNull(string)) {
return string.length() > length ? string.substring(0, length) + "..." : string; return string.length() > length ? string.substring(0, length) + "..." : string;
} }
return null; return null;
@ -50,7 +48,7 @@ public final class Strings {
* @return Строка с экранированными символами * @return Строка с экранированными символами
*/ */
public static String escapeMarkdown(String str) { public static String escapeMarkdown(String str) {
if (str != null) { if (checkNotNull(str)) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) { for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i); char c = str.charAt(i);

View File

@ -1,4 +1,4 @@
package dev.struchkov.haiti.utils.domain; package dev.struchkov.haiti.utils.container;
import java.util.Optional; import java.util.Optional;

View File

@ -0,0 +1,38 @@
package dev.struchkov.haiti.utils.container;
import java.util.Objects;
public interface ContextKey<T> {
String getValue();
Class<T> getType();
static <T> ContextKey<T> of(String value, Class<T> type) {
return new ContextKey<>() {
@Override
public String getValue() {
return value;
}
@Override
public Class<T> getType() {
return type;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ContextKey<?> contextKey = (ContextKey<?>) o;
return Objects.equals(value, contextKey.getValue());
}
@Override
public int hashCode() {
return Objects.hash(value);
}
};
}
}

View File

@ -1,4 +1,6 @@
package dev.struchkov.haiti.utils; package dev.struchkov.haiti.utils.container;
import java.util.Objects;
/** /**
* Адаптированная реализация Pair из пакета javafx.util. Реализация необходима, так как в некоторых сборках JDK этот * Адаптированная реализация Pair из пакета javafx.util. Реализация необходима, так как в некоторых сборках JDK этот
@ -32,4 +34,17 @@ public class Pair<K, V> {
this.value = value; this.value = value;
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pair<?, ?> pair = (Pair<?, ?>) o;
return Objects.equals(key, pair.key);
}
@Override
public int hashCode() {
return Objects.hash(key);
}
} }

View File

@ -1,7 +1,7 @@
module haiti.utils { module haiti.utils {
exports dev.struchkov.haiti.utils; exports dev.struchkov.haiti.utils;
exports dev.struchkov.haiti.utils.concurrent; exports dev.struchkov.haiti.utils.concurrent;
exports dev.struchkov.haiti.utils.domain; exports dev.struchkov.haiti.utils.container;
requires haiti.exception; requires haiti.exception;