diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 2566fd1515c..6adf7c646dc 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -217,6 +217,7 @@ return array( 'OCP\\Comments\\NotFoundException' => $baseDir . '/lib/public/Comments/NotFoundException.php', 'OCP\\Common\\Exception\\NotFoundException' => $baseDir . '/lib/public/Common/Exception/NotFoundException.php', 'OCP\\ConfigLexicon\\ConfigLexiconEntry' => $baseDir . '/lib/public/ConfigLexicon/ConfigLexiconEntry.php', + 'OCP\\ConfigLexicon\\ConfigLexiconValueType' => $baseDir . '/lib/public/ConfigLexicon/ConfigLexiconValueType.php', 'OCP\\ConfigLexicon\\IConfigLexicon' => $baseDir . '/lib/public/ConfigLexicon/IConfigLexicon.php', 'OCP\\ConfigLexicon\\IConfigLexiconEntry' => $baseDir . '/lib/public/ConfigLexicon/IConfigLexiconEntry.php', 'OCP\\Config\\BeforePreferenceDeletedEvent' => $baseDir . '/lib/public/Config/BeforePreferenceDeletedEvent.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 4b475a10fe8..d2975500bb1 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -250,6 +250,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\Comments\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Comments/NotFoundException.php', 'OCP\\Common\\Exception\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Common/Exception/NotFoundException.php', 'OCP\\ConfigLexicon\\ConfigLexiconEntry' => __DIR__ . '/../../..' . '/lib/public/ConfigLexicon/ConfigLexiconEntry.php', + 'OCP\\ConfigLexicon\\ConfigLexiconValueType' => __DIR__ . '/../../..' . '/lib/public/ConfigLexicon/ConfigLexiconValueType.php', 'OCP\\ConfigLexicon\\IConfigLexicon' => __DIR__ . '/../../..' . '/lib/public/ConfigLexicon/IConfigLexicon.php', 'OCP\\ConfigLexicon\\IConfigLexiconEntry' => __DIR__ . '/../../..' . '/lib/public/ConfigLexicon/IConfigLexiconEntry.php', 'OCP\\Config\\BeforePreferenceDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Config/BeforePreferenceDeletedEvent.php', diff --git a/lib/public/ConfigLexicon/ConfigLexiconEntry.php b/lib/public/ConfigLexicon/ConfigLexiconEntry.php index 5e29b504ff9..94080c0c4d8 100644 --- a/lib/public/ConfigLexicon/ConfigLexiconEntry.php +++ b/lib/public/ConfigLexicon/ConfigLexiconEntry.php @@ -46,11 +46,23 @@ class ConfigLexiconEntry implements IConfigLexiconEntry { public function __construct( private readonly string $key, private readonly ConfigLexiconValueType $type, + null|string|int|float|bool|array $default = null, string $definition = '', private readonly bool $lazy = false, private readonly bool $sensitive = false, private readonly bool $deprecated = false ) { + if ($default !== null) { + /** @psalm-suppress InvalidArgument */ + $this->default = match ($type) { + ConfigLexiconValueType::STRING => $this->convertFromString($default), + ConfigLexiconValueType::INT => $this->convertFromInt($default), + ConfigLexiconValueType::FLOAT => $this->convertFromFloat($default), + ConfigLexiconValueType::BOOL => $this->convertFromBool($default), + ConfigLexiconValueType::ARRAY => $this->convertFromArray($default) + }; + } + /** @psalm-suppress UndefinedClass */ if (\OC::$CLI) { // only store definition if ran from CLI $this->definition = $definition; @@ -79,68 +91,48 @@ class ConfigLexiconEntry implements IConfigLexiconEntry { } /** - * @inheritDoc - * * @param string $default - * - * @return self + * @return string * @since 30.0.0 */ - public function withDefaultString(string $default): self { - $this->default = $default; - return $this; + private function convertFromString(string $default): string { + return $default; } /** - * @inheritDoc - * * @param int $default - * - * @return self + * @return string * @since 30.0.0 */ - public function withDefaultInt(int $default): self { - $this->default = (string) $default; - return $this; + private function convertFromInt(int $default): string { + return (string) $default; } /** - * @inheritDoc - * * @param float $default - * - * @return self + * @return string * @since 30.0.0 */ - public function withDefaultFloat(float $default): self { - $this->default = (string) $default; - return $this; + private function convertFromFloat(float $default): string { + return (string) $default; } /** - * @inheritDoc - * * @param bool $default - * - * @return self + * @return string * @since 30.0.0 */ - public function withDefaultBool(bool $default): self { - $this->default = ($default) ? '1' : '0'; - return $this; + private function convertFromBool(bool $default): string { + return ($default) ? '1' : '0'; } /** - * @inheritDoc - * * @param array $default - * - * @return self + * @return string * @since 30.0.0 */ - public function withDefaultArray(array $default): self { - $this->default = json_encode($default); - return $this; + private function convertFromArray(array $default): string { + return json_encode($default); } /** diff --git a/lib/public/ConfigLexicon/ConfigLexiconValueType.php b/lib/public/ConfigLexicon/ConfigLexiconValueType.php new file mode 100644 index 00000000000..ef50bd01be8 --- /dev/null +++ b/lib/public/ConfigLexicon/ConfigLexiconValueType.php @@ -0,0 +1,44 @@ + + * + * @author Maxence Lange + * + * @license AGPL-3.0 or later + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OCP\ConfigLexicon; + +/** + * Listing of available value type for config lexicon + * + * @see IConfigLexicon + * @since 30.0.0 + */ +enum ConfigLexiconValueType: string { + /** @since 30.0.0 */ + case STRING = 'string'; + /** @since 30.0.0 */ + case INT = 'int'; + /** @since 30.0.0 */ + case FLOAT = 'float'; + /** @since 30.0.0 */ + case BOOL = 'bool'; + /** @since 30.0.0 */ + case ARRAY = 'array'; +} diff --git a/lib/public/ConfigLexicon/IConfigLexiconEntry.php b/lib/public/ConfigLexicon/IConfigLexiconEntry.php index 933b0a70786..84d6bf07877 100644 --- a/lib/public/ConfigLexicon/IConfigLexiconEntry.php +++ b/lib/public/ConfigLexicon/IConfigLexiconEntry.php @@ -26,19 +26,6 @@ namespace OCP\ConfigLexicon; use OCP\IAppConfig; -enum ConfigLexiconValueType { - /** @since 30.0.0 */ - case STRING; - /** @since 30.0.0 */ - case INT; - /** @since 30.0.0 */ - case FLOAT; - /** @since 30.0.0 */ - case BOOL; - /** @since 30.0.0 */ - case ARRAY; -} - /** * Model that represent config values within an app config lexicon. * @@ -46,7 +33,6 @@ enum ConfigLexiconValueType { * @since 30.0.0 */ interface IConfigLexiconEntry { - /** * returns the config key. * @@ -64,56 +50,6 @@ interface IConfigLexiconEntry { */ public function getValueType(): ConfigLexiconValueType; - /** - * set default value (as string) for config value. - * - * @param string $default - * - * @return self - * @since 30.0.0 - */ - public function withDefaultString(string $default): self; - - /** - * set default value (as int) for config value. - * - * @param int $default - * - * @return self - * @since 30.0.0 - */ - public function withDefaultInt(int $default): self; - - /** - * set default value (as float) for config value. - * - * @param float $default - * - * @return self - * @since 30.0.0 - */ - public function withDefaultFloat(float $default): self; - - /** - * set default value (as bool) for config value. - * - * @param bool $default - * - * @return self - * @since 30.0.0 - */ - public function withDefaultBool(bool $default): self; - - /** - * set default value (as array) for config value. - * - * @param array $default - * - * @return self - * @since 30.0.0 - */ - public function withDefaultArray(array $default): self; - /** * returns the default value set for this config key. * default value is returned as string or NULL if not set. @@ -123,7 +59,6 @@ interface IConfigLexiconEntry { */ public function getDefault(): ?string; - /** * returns the description for config key, only available when process is initiated from occ. * returns empty string if not set or if process is not initiated from occ.