Merge branch 'main' into develop

This commit is contained in:
René Pfeuffer
2025-01-17 19:54:54 +01:00
26 changed files with 97 additions and 92 deletions

View File

@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.6.1] - 2025-01-17
### Fixed
- Removed the API token error log message that was being printed when the API token was invalid (fix from 2.46.5)
## [2.48.4] - 2025-01-17
### Fixed
- Fixes from version 2.46.2, 2.46.3, 2.46.4, and 2.46.5
## [2.46.5] - 2025-01-17
### Fixed
- Removed the API token error log message that was being printed when the API token was invalid
## [3.6.0] - 2024-12-05
### Added
- Extension point for contributor row in contributor table
@@ -1636,10 +1648,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[2.46.2]: https://scm-manager.org/download/2.46.2
[2.46.3]: https://scm-manager.org/download/2.46.3
[2.46.4]: https://scm-manager.org/download/2.46.4
[2.46.5]: https://scm-manager.org/download/2.46.5
[2.47.0]: https://scm-manager.org/download/2.47.0
[2.48.0]: https://scm-manager.org/download/2.48.0
[2.48.1]: https://scm-manager.org/download/2.48.1
[2.48.2]: https://scm-manager.org/download/2.48.2
[2.48.3]: https://scm-manager.org/download/2.48.3
[2.48.4]: https://scm-manager.org/download/2.48.4
[3.0.0]: https://scm-manager.org/download/3.0.0
[3.0.1]: https://scm-manager.org/download/3.0.1
[3.0.2]: https://scm-manager.org/download/3.0.2
@@ -1655,3 +1670,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[3.4.2]: https://scm-manager.org/download/3.4.2
[3.5.0]: https://scm-manager.org/download/3.5.0
[3.6.0]: https://scm-manager.org/download/3.6.0
[3.6.1]: https://scm-manager.org/download/3.6.1

View File

@@ -15,6 +15,6 @@
#
group = sonia.scm
version = 3.6.1-SNAPSHOT
version = 3.6.2-SNAPSHOT
org.gradle.jvmargs=-Xmx1024M
org.gradle.caching=true

View File

@@ -16,13 +16,10 @@
package sonia.scm.repository.xml;
import com.google.common.collect.ImmutableList;
import com.google.inject.Singleton;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.io.FileSystem;
import sonia.scm.repository.InternalRepositoryException;
import sonia.scm.repository.NamespaceAndName;
@@ -37,7 +34,6 @@ import sonia.scm.store.StoreReadOnlyException;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
@@ -45,8 +41,6 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Singleton
@Slf4j
@@ -62,9 +56,6 @@ public class XmlRepositoryDAO implements RepositoryDAO {
private final Map<NamespaceAndName, Repository> byNamespaceAndName;
private final ReadWriteLock byNamespaceLock = new ReentrantReadWriteLock();
private static final Logger LOG = LoggerFactory.getLogger(XmlRepositoryDAO.class);
@Inject
public XmlRepositoryDAO(PathBasedRepositoryLocationResolver repositoryLocationResolver, FileSystem fileSystem, RepositoryExportingCheck repositoryExportingCheck) {
this.repositoryLocationResolver = repositoryLocationResolver;
@@ -99,10 +90,10 @@ public class XmlRepositoryDAO implements RepositoryDAO {
pathRepositoryLocationResolverInstance.forAllLocations((repositoryId, repositoryPath) -> {
try {
Repository repository = metadataStore.read(repositoryPath);
if (byNamespaceAndName.containsKey(repository.getNamespaceAndName())) {
LOG.warn("Duplicate repository found. Adding suffix DUPLICATE to repository {}", repository);
repository.setName(repository.getName() + "-" + repositoryId + "-DUPLICATE");
}
if (byNamespaceAndName.containsKey(repository.getNamespaceAndName())) {
log.warn("Duplicate repository found. Adding suffix DUPLICATE to repository {}", repository);
repository.setName(repository.getName() + "-" + repositoryId + "-DUPLICATE");
}
byNamespaceAndName.put(repository.getNamespaceAndName(), repository);
byId.put(repositoryId, repository);
} catch (InternalRepositoryException e) {

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/scm-git-plugin",
"private": true,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"main": "./src/main/js/index.ts",
"scripts": {
@@ -11,7 +11,7 @@
"typecheck": "tsc"
},
"dependencies": {
"@scm-manager/ui-plugins": "3.6.1-SNAPSHOT"
"@scm-manager/ui-plugins": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/babel-preset": "^2.13.1",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/scm-hg-plugin",
"private": true,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"main": "./src/main/js/index.ts",
"scripts": {
@@ -10,7 +10,7 @@
"typecheck": "tsc"
},
"dependencies": {
"@scm-manager/ui-plugins": "3.6.1-SNAPSHOT"
"@scm-manager/ui-plugins": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/babel-preset": "^2.13.1",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/scm-legacy-plugin",
"private": true,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"main": "./src/main/js/index.tsx",
"scripts": {
@@ -10,7 +10,7 @@
"typecheck": "tsc"
},
"dependencies": {
"@scm-manager/ui-plugins": "3.6.1-SNAPSHOT"
"@scm-manager/ui-plugins": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/babel-preset": "^2.13.1",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/scm-svn-plugin",
"private": true,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"main": "./src/main/js/index.ts",
"scripts": {
@@ -10,7 +10,7 @@
"typecheck": "tsc"
},
"dependencies": {
"@scm-manager/ui-plugins": "3.6.1-SNAPSHOT"
"@scm-manager/ui-plugins": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/babel-preset": "^2.13.1",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/e2e-tests",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "End to end Tests for SCM-Manager",
"main": "index.js",
"author": "Eduard Heimbuch <eduard.heimbuch@cloudogu.com>",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-api",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "React hook api for the SCM-Manager backend",
"main": "build/index.js",
"module": "build/index.mjs",
@@ -26,7 +26,7 @@
"react-i18next": "11"
},
"devDependencies": {
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"tsup": "^5.12.6",
"@types/react-test-renderer": "^17.0.1",
"@scm-manager/babel-preset": "^2.13.1",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-buttons",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"private": false,
"main": "index.ts",
"license": "AGPL-3.0-only",
@@ -13,7 +13,7 @@
"classnames": "^2.3.1"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/prettier-config": "^2.12.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-components",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "UI Components for SCM-Manager and its plugins",
"main": "src/index.ts",
"files": [
@@ -32,8 +32,8 @@
"react-query": "^3.39.2"
},
"devDependencies": {
"@scm-manager/ui-tests": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-tests": "3.6.2-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@types/fetch-mock": "^7.3.1",
"@types/react-select": "^2.0.19",
"@types/unist": "^2.0.3",
@@ -67,17 +67,17 @@
"@scm-manager/jest-preset": "^2.14.1",
"@scm-manager/prettier-config": "^2.12.0",
"@scm-manager/tsconfig": "^2.13.0",
"@scm-manager/ui-syntaxhighlighting": "3.6.1-SNAPSHOT",
"@scm-manager/ui-shortcuts": "3.6.1-SNAPSHOT",
"@scm-manager/ui-text": "3.6.1-SNAPSHOT"
"@scm-manager/ui-syntaxhighlighting": "3.6.2-SNAPSHOT",
"@scm-manager/ui-shortcuts": "3.6.2-SNAPSHOT",
"@scm-manager/ui-text": "3.6.2-SNAPSHOT"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.1-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.1-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.1-SNAPSHOT",
"@scm-manager/ui-api": "3.6.1-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.1-SNAPSHOT",
"@scm-manager/ui-core": "3.6.2-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.2-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.2-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.2-SNAPSHOT",
"@scm-manager/ui-api": "3.6.2-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.2-SNAPSHOT",
"deepmerge": "^4.2.2",
"hast-util-sanitize": "^3.0.2",
"react-diff-view": "^2.4.10",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-core",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"main": "./src/index.ts",
"license": "AGPL-3.0-only",
"scripts": {
@@ -20,7 +20,7 @@
"styled-components": "5"
},
"dependencies": {
"@scm-manager/ui-api": "3.6.1-SNAPSHOT",
"@scm-manager/ui-api": "3.6.2-SNAPSHOT",
"@radix-ui/react-radio-group": "^1.1.3",
"@radix-ui/react-slot": "^1.0.1",
"@radix-ui/react-visually-hidden": "^1.0.3",
@@ -37,7 +37,7 @@
"@scm-manager/eslint-config": "^2.17.0",
"@scm-manager/tsconfig": "^2.12.0",
"@scm-manager/babel-preset": "^2.13.1",
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@types/mousetrap": "1.6.5",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "12.1.5",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-extensions",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"private": false,
"author": "Sebastian Sdorra <sebastian.sdorra@cloudogu.com>",
@@ -21,8 +21,8 @@
"react": "^17.0.1"
},
"devDependencies": {
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-tests": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@scm-manager/ui-tests": "3.6.2-SNAPSHOT",
"@scm-manager/babel-preset": "^2.13.1",
"@scm-manager/eslint-config": "^2.17.0",
"@scm-manager/jest-preset": "^2.14.1",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/ui-forms",
"private": false,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"main": "index.ts",
"scripts": {
"depcheck": "depcheck"
@@ -21,7 +21,7 @@
"styled-components": "^5.3.5"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/eslint-config": "^2.17.0",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/ui-layout",
"private": false,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"main": "index.ts",
"scripts": {
"depcheck": "depcheck"
@@ -14,7 +14,7 @@
"react": "^17.0.1"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/eslint-config": "^2.17.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-legacy",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"private": true,
"main": "build/index.js",
"module": "build/index.mjs",
@@ -13,13 +13,13 @@
"depcheck": "depcheck"
},
"dependencies": {
"@scm-manager/ui-api": "3.6.1-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.1-SNAPSHOT",
"@scm-manager/ui-api": "3.6.2-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.2-SNAPSHOT",
"react-redux": "^5.0.7",
"redux": "^4.0.0"
},
"devDependencies": {
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@types/react-redux": "5.0.7",
"@scm-manager/babel-preset": "^2.13.1",
"@scm-manager/eslint-config": "^2.17.0",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/ui-overlays",
"private": false,
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"main": "index.ts",
"scripts": {
"depcheck": "depcheck"
@@ -19,7 +19,7 @@
"classnames": "^2.3.1"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/eslint-config": "^2.17.0",

View File

@@ -1,7 +1,7 @@
{
"name": "@scm-manager/ui-plugins",
"description": "Defines the versions of SCM-Manager plugin dependencies provided by the core webapp. Exclusively used by the postinstall command of @scm-manager/plugin-scripts.",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"type": "module",
"main": "./build/provided-modules.js",
@@ -17,14 +17,14 @@
"react-router-dom": "^5.3.1",
"react-i18next": "11",
"styled-components": "^5.3.5",
"@scm-manager/ui-api": "3.6.1-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.1-SNAPSHOT",
"@scm-manager/ui-components": "3.6.1-SNAPSHOT",
"@scm-manager/ui-core": "3.6.1-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.1-SNAPSHOT",
"@scm-manager/ui-forms": "3.6.1-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.1-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.1-SNAPSHOT",
"@scm-manager/ui-api": "3.6.2-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.2-SNAPSHOT",
"@scm-manager/ui-components": "3.6.2-SNAPSHOT",
"@scm-manager/ui-core": "3.6.2-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.2-SNAPSHOT",
"@scm-manager/ui-forms": "3.6.2-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.2-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.2-SNAPSHOT",
"classnames": "^2.3.1",
"query-string": "6.14.1",
"redux": "^4.0.0",
@@ -43,8 +43,8 @@
"@scm-manager/plugin-scripts": "^1.6.1",
"@scm-manager/prettier-config": "^2.12.0",
"@scm-manager/tsconfig": "^2.13.0",
"@scm-manager/ui-tests": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-tests": "3.6.2-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@types/classnames": "^2.3.1",
"@types/enzyme": "^3.10.18",
"@types/i18next": "^13.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-shortcuts",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"license": "AGPL-3.0-only",
"private": true,
"main": "index.ts",
@@ -18,7 +18,7 @@
"@scm-manager/tsconfig": "^2.13.0"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"prettier": "@scm-manager/prettier-config",
"eslintConfig": {

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-styles",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "Styles for SCM-Manager",
"main": "src/scm.scss",
"license": "AGPL-3.0-only",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-syntaxhighlighting",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"private": true,
"main": "src/index.ts",
"scripts": {
@@ -13,7 +13,7 @@
"depcheck": "depcheck"
},
"dependencies": {
"@scm-manager/ui-text": "3.6.1-SNAPSHOT",
"@scm-manager/ui-text": "3.6.2-SNAPSHOT",
"nanoid": "^3.3.2",
"refractor": "^4.5.0"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-tests",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "UI-Tests helpers",
"author": "Sebastian Sdorra <sebastian.sdorra@cloudogu.com>",
"license": "AGPL-3.0-only",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-text",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"private": true,
"main": "index.ts",
"scripts": {
@@ -10,7 +10,7 @@
"react": "^17.0.1"
},
"dependencies": {
"@scm-manager/ui-core": "3.6.1-SNAPSHOT"
"@scm-manager/ui-core": "3.6.2-SNAPSHOT"
},
"devDependencies": {
"@scm-manager/eslint-config": "^2.17.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-types",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"description": "Typescript types for SCM-Manager related Objects",
"main": "src/index.ts",
"files": [

View File

@@ -1,6 +1,6 @@
{
"name": "@scm-manager/ui-webapp",
"version": "3.6.1-SNAPSHOT",
"version": "3.6.2-SNAPSHOT",
"private": true,
"scripts": {
"test": "jest",
@@ -11,16 +11,16 @@
},
"dependencies": {
"@headlessui/react": "^1.7.17",
"@scm-manager/ui-components": "3.6.1-SNAPSHOT",
"@scm-manager/ui-api": "3.6.1-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.1-SNAPSHOT",
"@scm-manager/ui-shortcuts": "3.6.1-SNAPSHOT",
"@scm-manager/ui-legacy": "3.6.1-SNAPSHOT",
"@scm-manager/ui-forms": "3.6.1-SNAPSHOT",
"@scm-manager/ui-core": "3.6.1-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.1-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.1-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.1-SNAPSHOT",
"@scm-manager/ui-components": "3.6.2-SNAPSHOT",
"@scm-manager/ui-api": "3.6.2-SNAPSHOT",
"@scm-manager/ui-extensions": "3.6.2-SNAPSHOT",
"@scm-manager/ui-shortcuts": "3.6.2-SNAPSHOT",
"@scm-manager/ui-legacy": "3.6.2-SNAPSHOT",
"@scm-manager/ui-forms": "3.6.2-SNAPSHOT",
"@scm-manager/ui-core": "3.6.2-SNAPSHOT",
"@scm-manager/ui-overlays": "3.6.2-SNAPSHOT",
"@scm-manager/ui-layout": "3.6.2-SNAPSHOT",
"@scm-manager/ui-buttons": "3.6.2-SNAPSHOT",
"@radix-ui/react-portal": "^1.0.4",
"@react-aria/overlays": "^3.23.1",
"classnames": "^2.3.1",
@@ -46,10 +46,10 @@
"devDependencies": {
"@scm-manager/eslint-config": "^2.17.0",
"@scm-manager/jest-preset": "^2.14.1",
"@scm-manager/ui-tests": "3.6.1-SNAPSHOT",
"@scm-manager/ui-plugins": "3.6.1-SNAPSHOT",
"@scm-manager/ui-tests": "3.6.2-SNAPSHOT",
"@scm-manager/ui-plugins": "3.6.2-SNAPSHOT",
"@scm-manager/prettier-config": "^2.12.0",
"@scm-manager/ui-types": "3.6.1-SNAPSHOT",
"@scm-manager/ui-types": "3.6.2-SNAPSHOT",
"@types/classnames": "^2.3.1",
"@types/enzyme": "^3.10.18",
"@types/react": "^17.0.1",

View File

@@ -56,9 +56,7 @@ class ApiKeyTokenHandler {
return of(OBJECT_MAPPER.readValue(decoder.decode(token), Token.class));
} catch (IOException | DecodingException e) {
LOG.debug("failed to read api token, perhaps it is a jwt token or a normal password");
if (LOG.isTraceEnabled()) {
LOG.trace("failed to parse token", e);
}
// do not print the exception here, because it could reveal password details
return empty();
}
}