Skip to content

Commit

Permalink
Merge pull request #666 from hexagonkt/develop
Browse files Browse the repository at this point in the history
Add RecordCallback and several core utilities
  • Loading branch information
jaguililla committed Oct 6, 2023
2 parents 4b0dcd0 + 6df39f0 commit d7bef96
Show file tree
Hide file tree
Showing 152 changed files with 1,246 additions and 603 deletions.
6 changes: 6 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.github.jk1.license.render.CsvReportRenderer
import com.github.jk1.license.render.InventoryHtmlReportRenderer
import com.github.jk1.license.render.InventoryMarkdownReportRenderer
import com.github.jk1.license.render.ReportRenderer
import org.gradle.api.tasks.wrapper.Wrapper.DistributionType.ALL

/*
* Main build script, responsible for:
Expand Down Expand Up @@ -138,6 +139,11 @@ gradle.taskGraph.whenReady(closureOf<TaskExecutionGraph> {
}
})

tasks.wrapper {
gradleVersion = "8.4"
distributionType = ALL
}

apiValidation {
ignoredProjects.addAll(
listOf(
Expand Down
2 changes: 1 addition & 1 deletion contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ project itself. These are internal modules not intended to be directly used by u
[site]: https://github.com/hexagonkt/hexagon/blob/master/site/README.md

## Local Setup
Hexagon build process requires a JDK 17+ to compile. You can check the required software, build the
Hexagon build process requires a JDK 21+ to compile. You can check the required software, build the
project, generate the documentation and install it in your local repository typing:

```bash
Expand Down
2 changes: 1 addition & 1 deletion core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Provides a logging management capabilities abstracting the application from logg

The following code block shows the most common use cases for the [Logger] class:

@code core/src/test/kotlin/com/hexagonkt/core/HexagonCoreSamplesTest.kt?logger
@code core/src/test/kotlin/com/hexagonkt/core/logging/LoggerTest.kt?logger

By default, Hexagon uses the [Java Util Logging] logging library, you can use any of its
implementations by just adding another logging adapter as a dependency. Below you can see some
Expand Down
216 changes: 106 additions & 110 deletions core/api/core.api
Original file line number Diff line number Diff line change
@@ -1,72 +1,3 @@
public final class com/hexagonkt/core/Ansi {
public static final field BLACK Ljava/lang/String;
public static final field BLACK_BG Ljava/lang/String;
public static final field BLINK Ljava/lang/String;
public static final field BLINK_OFF Ljava/lang/String;
public static final field BLUE Ljava/lang/String;
public static final field BLUE_BG Ljava/lang/String;
public static final field BOLD Ljava/lang/String;
public static final field BOLD_OFF Ljava/lang/String;
public static final field BRIGHT_BLACK Ljava/lang/String;
public static final field BRIGHT_BLACK_BG Ljava/lang/String;
public static final field BRIGHT_BLUE Ljava/lang/String;
public static final field BRIGHT_BLUE_BG Ljava/lang/String;
public static final field BRIGHT_CYAN Ljava/lang/String;
public static final field BRIGHT_CYAN_BG Ljava/lang/String;
public static final field BRIGHT_GREEN Ljava/lang/String;
public static final field BRIGHT_GREEN_BG Ljava/lang/String;
public static final field BRIGHT_MAGENTA Ljava/lang/String;
public static final field BRIGHT_MAGENTA_BG Ljava/lang/String;
public static final field BRIGHT_RED Ljava/lang/String;
public static final field BRIGHT_RED_BG Ljava/lang/String;
public static final field BRIGHT_WHITE Ljava/lang/String;
public static final field BRIGHT_WHITE_BG Ljava/lang/String;
public static final field BRIGHT_YELLOW Ljava/lang/String;
public static final field BRIGHT_YELLOW_BG Ljava/lang/String;
public static final field CSI Ljava/lang/String;
public static final field CYAN Ljava/lang/String;
public static final field CYAN_BG Ljava/lang/String;
public static final field DEFAULT Ljava/lang/String;
public static final field DEFAULT_BG Ljava/lang/String;
public static final field GREEN Ljava/lang/String;
public static final field GREEN_BG Ljava/lang/String;
public static final field INSTANCE Lcom/hexagonkt/core/Ansi;
public static final field INVERSE Ljava/lang/String;
public static final field INVERSE_OFF Ljava/lang/String;
public static final field MAGENTA Ljava/lang/String;
public static final field MAGENTA_BG Ljava/lang/String;
public static final field RED Ljava/lang/String;
public static final field RED_BG Ljava/lang/String;
public static final field RESET Ljava/lang/String;
public static final field UNDERLINE Ljava/lang/String;
public static final field UNDERLINE_OFF Ljava/lang/String;
public static final field WHITE Ljava/lang/String;
public static final field WHITE_BG Ljava/lang/String;
public static final field YELLOW Ljava/lang/String;
public static final field YELLOW_BG Ljava/lang/String;
public final fun getREGEX ()Lkotlin/text/Regex;
}

public final class com/hexagonkt/core/CasesKt {
public static final fun camelToSnake (Ljava/lang/String;)Ljava/lang/String;
public static final fun camelToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun getCAMEL_CASE ()Lkotlin/text/Regex;
public static final fun getKEBAB_CASE ()Lkotlin/text/Regex;
public static final fun getPASCAL_CASE ()Lkotlin/text/Regex;
public static final fun getSNAKE_CASE ()Lkotlin/text/Regex;
public static final fun kebabToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun snakeToCamel (Ljava/lang/String;)Ljava/lang/String;
public static final fun snakeToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun toWords (Ljava/lang/Enum;)Ljava/lang/String;
public static final fun toWords (Ljava/util/List;)Ljava/util/List;
public static final fun wordsToCamel (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToKebab (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToPascal (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToSentence (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToSnake (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToTitle (Ljava/util/List;)Ljava/lang/String;
}

public final class com/hexagonkt/core/ChecksKt {
public static final fun checkSize (Ljava/util/Collection;Lkotlin/ranges/IntRange;)Ljava/util/Collection;
public static final fun requireGreater (Ljava/lang/Object;Lkotlin/reflect/KProperty1;Ljava/lang/Object;)V
Expand Down Expand Up @@ -177,22 +108,8 @@ public final class com/hexagonkt/core/ExceptionsKt {
public static synthetic fun toText$default (Ljava/lang/Throwable;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
}

public final class com/hexagonkt/core/Glob {
public fun <init> (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;)Lcom/hexagonkt/core/Glob;
public static synthetic fun copy$default (Lcom/hexagonkt/core/Glob;Ljava/lang/String;ILjava/lang/Object;)Lcom/hexagonkt/core/Glob;
public fun equals (Ljava/lang/Object;)Z
public final fun getPattern ()Ljava/lang/String;
public final fun getRegex ()Lkotlin/text/Regex;
public fun hashCode ()I
public final fun matches (Ljava/lang/String;)Z
public fun toString ()Ljava/lang/String;
}

public final class com/hexagonkt/core/HelpersKt {
public static final fun check (Ljava/lang/String;[Lkotlin/jvm/functions/Function0;)V
public static synthetic fun check$default (Ljava/lang/String;[Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
public static final fun exec (Ljava/lang/String;Ljava/io/File;JZ)Ljava/lang/String;
public static final fun exec (Ljava/util/List;Ljava/io/File;JZ)Ljava/lang/String;
public static synthetic fun exec$default (Ljava/lang/String;Ljava/io/File;JZILjava/lang/Object;)Ljava/lang/String;
Expand Down Expand Up @@ -277,30 +194,6 @@ public final class com/hexagonkt/core/ResourceNotFoundException : java/io/IOExce
public fun <init> (Ljava/lang/String;)V
}

public final class com/hexagonkt/core/StringsKt {
public static final fun banner (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun banner$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun decodeBase64 (Ljava/lang/String;)[B
public static final fun encodeToBase64 (Ljava/lang/String;)Ljava/lang/String;
public static final fun encodeToBase64 ([B)Ljava/lang/String;
public static final fun filter (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
public static final fun filterVars (Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
public static final fun findGroups (Lkotlin/text/Regex;Ljava/lang/String;)Ljava/util/List;
public static final fun getEol ()Ljava/lang/String;
public static final fun getParsedClasses ()Ljava/util/Set;
public static final fun parse (Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/lang/Object;
public static final fun parseOrNull (Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/lang/Object;
public static final fun prependIndent (Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
public static synthetic fun prependIndent$default (Ljava/lang/String;ILjava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun stripAccents (Ljava/lang/String;)Ljava/lang/String;
public static final fun stripAnsi (Ljava/lang/String;)Ljava/lang/String;
public static final fun toEnum (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ljava/lang/Enum;
public static final fun toEnumOrNull (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ljava/lang/Enum;
public static final fun toEnumValue (Ljava/lang/String;)Ljava/lang/String;
public static final fun toStream (Ljava/lang/String;)Ljava/io/InputStream;
public static final fun utf8 ([I)Ljava/lang/String;
}

public final class com/hexagonkt/core/UuidsKt {
public static final fun bytes (Ljava/util/UUID;)[B
public static final fun toBase64 (Ljava/util/UUID;)Ljava/lang/String;
Expand All @@ -309,15 +202,12 @@ public final class com/hexagonkt/core/UuidsKt {
}

public final class com/hexagonkt/core/logging/Logger {
public static final field FLARE_PREFIX Ljava/lang/String;
public fun <init> (Ljava/lang/String;)V
public fun <init> (Lkotlin/reflect/KClass;)V
public final fun debug (Lkotlin/jvm/functions/Function0;)V
public final fun error (Ljava/lang/Throwable;Lkotlin/jvm/functions/Function1;)V
public final fun error (Lkotlin/jvm/functions/Function0;)V
public static synthetic fun error$default (Lcom/hexagonkt/core/logging/Logger;Ljava/lang/Throwable;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public final fun flare (Lkotlin/jvm/functions/Function0;)V
public static synthetic fun flare$default (Lcom/hexagonkt/core/logging/Logger;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
public final fun getName ()Ljava/lang/String;
public final fun info (Lkotlin/jvm/functions/Function0;)V
public final fun isDebugEnabled ()Z
Expand Down Expand Up @@ -549,3 +439,109 @@ public final class com/hexagonkt/core/security/KeyStoresKt {
public static final fun loadKeyStore (Ljava/net/URL;Ljava/lang/String;)Ljava/security/KeyStore;
}

public final class com/hexagonkt/core/text/Ansi {
public static final field BLACK Ljava/lang/String;
public static final field BLACK_BG Ljava/lang/String;
public static final field BLINK Ljava/lang/String;
public static final field BLINK_OFF Ljava/lang/String;
public static final field BLUE Ljava/lang/String;
public static final field BLUE_BG Ljava/lang/String;
public static final field BOLD Ljava/lang/String;
public static final field BOLD_OFF Ljava/lang/String;
public static final field BRIGHT_BLACK Ljava/lang/String;
public static final field BRIGHT_BLACK_BG Ljava/lang/String;
public static final field BRIGHT_BLUE Ljava/lang/String;
public static final field BRIGHT_BLUE_BG Ljava/lang/String;
public static final field BRIGHT_CYAN Ljava/lang/String;
public static final field BRIGHT_CYAN_BG Ljava/lang/String;
public static final field BRIGHT_GREEN Ljava/lang/String;
public static final field BRIGHT_GREEN_BG Ljava/lang/String;
public static final field BRIGHT_MAGENTA Ljava/lang/String;
public static final field BRIGHT_MAGENTA_BG Ljava/lang/String;
public static final field BRIGHT_RED Ljava/lang/String;
public static final field BRIGHT_RED_BG Ljava/lang/String;
public static final field BRIGHT_WHITE Ljava/lang/String;
public static final field BRIGHT_WHITE_BG Ljava/lang/String;
public static final field BRIGHT_YELLOW Ljava/lang/String;
public static final field BRIGHT_YELLOW_BG Ljava/lang/String;
public static final field CSI Ljava/lang/String;
public static final field CYAN Ljava/lang/String;
public static final field CYAN_BG Ljava/lang/String;
public static final field DEFAULT Ljava/lang/String;
public static final field DEFAULT_BG Ljava/lang/String;
public static final field GREEN Ljava/lang/String;
public static final field GREEN_BG Ljava/lang/String;
public static final field INSTANCE Lcom/hexagonkt/core/text/Ansi;
public static final field INVERSE Ljava/lang/String;
public static final field INVERSE_OFF Ljava/lang/String;
public static final field MAGENTA Ljava/lang/String;
public static final field MAGENTA_BG Ljava/lang/String;
public static final field RED Ljava/lang/String;
public static final field RED_BG Ljava/lang/String;
public static final field RESET Ljava/lang/String;
public static final field UNDERLINE Ljava/lang/String;
public static final field UNDERLINE_OFF Ljava/lang/String;
public static final field WHITE Ljava/lang/String;
public static final field WHITE_BG Ljava/lang/String;
public static final field YELLOW Ljava/lang/String;
public static final field YELLOW_BG Ljava/lang/String;
public final fun getREGEX ()Lkotlin/text/Regex;
}

public final class com/hexagonkt/core/text/CasesKt {
public static final fun camelToSnake (Ljava/lang/String;)Ljava/lang/String;
public static final fun camelToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun getCAMEL_CASE ()Lkotlin/text/Regex;
public static final fun getKEBAB_CASE ()Lkotlin/text/Regex;
public static final fun getPASCAL_CASE ()Lkotlin/text/Regex;
public static final fun getSNAKE_CASE ()Lkotlin/text/Regex;
public static final fun kebabToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun snakeToCamel (Ljava/lang/String;)Ljava/lang/String;
public static final fun snakeToWords (Ljava/lang/String;)Ljava/util/List;
public static final fun toWords (Ljava/lang/Enum;)Ljava/lang/String;
public static final fun toWords (Ljava/util/List;)Ljava/util/List;
public static final fun wordsToCamel (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToKebab (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToPascal (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToSentence (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToSnake (Ljava/util/List;)Ljava/lang/String;
public static final fun wordsToTitle (Ljava/util/List;)Ljava/lang/String;
}

public final class com/hexagonkt/core/text/Glob {
public fun <init> (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;)Lcom/hexagonkt/core/text/Glob;
public static synthetic fun copy$default (Lcom/hexagonkt/core/text/Glob;Ljava/lang/String;ILjava/lang/Object;)Lcom/hexagonkt/core/text/Glob;
public fun equals (Ljava/lang/Object;)Z
public final fun getPattern ()Ljava/lang/String;
public final fun getRegex ()Lkotlin/text/Regex;
public fun hashCode ()I
public final fun matches (Ljava/lang/String;)Z
public fun toString ()Ljava/lang/String;
}

public final class com/hexagonkt/core/text/StringsKt {
public static final fun banner (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun banner$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun decodeBase64 (Ljava/lang/String;)[B
public static final fun encodeToBase64 (Ljava/lang/String;)Ljava/lang/String;
public static final fun encodeToBase64 ([B)Ljava/lang/String;
public static final fun filter (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
public static final fun filterVars (Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;
public static final fun findGroups (Lkotlin/text/Regex;Ljava/lang/String;)Ljava/util/List;
public static final fun getEol ()Ljava/lang/String;
public static final fun getParsedClasses ()Ljava/util/Set;
public static final fun parse (Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/lang/Object;
public static final fun parseOrNull (Ljava/lang/String;Lkotlin/reflect/KClass;)Ljava/lang/Object;
public static final fun prependIndent (Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
public static synthetic fun prependIndent$default (Ljava/lang/String;ILjava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun stripAccents (Ljava/lang/String;)Ljava/lang/String;
public static final fun stripAnsi (Ljava/lang/String;)Ljava/lang/String;
public static final fun toEnum (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ljava/lang/Enum;
public static final fun toEnumOrNull (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ljava/lang/Enum;
public static final fun toEnumValue (Ljava/lang/String;)Ljava/lang/String;
public static final fun toStream (Ljava/lang/String;)Ljava/io/InputStream;
public static final fun utf8 ([I)Ljava/lang/String;
}

2 changes: 2 additions & 0 deletions core/src/main/kotlin/com/hexagonkt/core/Exceptions.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.hexagonkt.core

import com.hexagonkt.core.text.eol

/**
* This flag is true when assertions are enabled in the JVM (`-ea` flag). Assertions are disabled by
* default in the JVM, but they are enabled (and should be that way) on the tests.
Expand Down
2 changes: 1 addition & 1 deletion core/src/main/kotlin/com/hexagonkt/core/Helpers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ fun String.shell(
/**
* [TODO](https://github.com/hexagonkt/hexagon/issues/271).
*/
fun check(message: String = "Multiple exceptions", vararg blocks: () -> Unit) {
fun check(message: String, vararg blocks: () -> Unit) {
val exceptions: List<Exception> = blocks.mapNotNull {
try {
it()
Expand Down
1 change: 1 addition & 0 deletions core/src/main/kotlin/com/hexagonkt/core/Jvm.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.hexagonkt.core

import com.hexagonkt.core.text.parseOrNull
import java.net.InetAddress
import java.nio.charset.Charset
import java.time.ZoneId
Expand Down
2 changes: 2 additions & 0 deletions core/src/main/kotlin/com/hexagonkt/core/Uuids.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.hexagonkt.core

import com.hexagonkt.core.text.decodeBase64
import com.hexagonkt.core.text.encodeToBase64
import java.nio.ByteBuffer
import java.util.*

Expand Down
18 changes: 1 addition & 17 deletions core/src/main/kotlin/com/hexagonkt/core/logging/Logger.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,16 @@
package com.hexagonkt.core.logging

import kotlin.reflect.KClass
import com.hexagonkt.core.Ansi.BLINK
import com.hexagonkt.core.Ansi.BOLD
import com.hexagonkt.core.Ansi.RESET
import com.hexagonkt.core.logging.LoggingLevel.*

/**
* Logger class with Kotlin improvements like lazy evaluation. It is backed by a logging port.
*
* @param name Logger name. It is shown in the logs messages and used for log filtering.
* @sample com.hexagonkt.core.HexagonCoreSamplesTest.loggerUsage
* @sample com.hexagonkt.core.logging.LoggerTest.loggerUsage
*/
class Logger(val name: String) {

private companion object {
const val FLARE_PREFIX = ">>>>>>>>"
}

internal val log: LoggerPort = LoggingManager.adapter.createLogger(name)

/**
Expand Down Expand Up @@ -113,15 +106,6 @@ class Logger(val name: String) {
else log.log(ERROR, exception, message)
}

/**
* Log a message using [TRACE] level.
*
* @param message The required message to log.
*/
fun flare(message: () -> Any? = { "" }) {
log.log(TRACE) { "$BOLD$BLINK$FLARE_PREFIX$RESET ${message()}" }
}

/**
* Set a logging level for this logger.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ data class SystemLogger(val name: String) : LoggerPort {
INFO -> System.Logger.Level.INFO
WARN -> System.Logger.Level.WARNING
ERROR -> System.Logger.Level.ERROR
OFF -> System.Logger.Level.OFF
OFF -> error("OFF Level not allowed for a logging message")
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hexagonkt.core
package com.hexagonkt.core.text

/**
* Constants for console formatting with [ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hexagonkt.core
package com.hexagonkt.core.text

val CAMEL_CASE: Regex = Regex("[a-z]+([A-Z][a-z0-9]+)+")
val PASCAL_CASE: Regex = Regex("([A-Z][a-z0-9]+)+")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.hexagonkt.core
package com.hexagonkt.core.text

import kotlin.IllegalArgumentException
import java.util.regex.PatternSyntaxException
Expand Down

0 comments on commit d7bef96

Please sign in to comment.