Class Configuration
java.lang.Object
page.codeberg.friedolyn.configuration.Configuration
- All Implemented Interfaces:
Copyable<Configuration>,Redactable
Represents the configuration of the
Friedolyn application.-
Field Summary
FieldsModifier and TypeFieldDescriptionThe academic degrees that the student is currently pursuing, for example "Bachelor of Science".static final @NonNull String[]Default file names for the configuration that will be used if no explicit file name is specified.private @NonNull Argon2ConfigurationThe parameters for the Argon2 hashing algorithm to use when computing theuserHash,clearnameHashandemailHash.private BannedUserThe student represented by this configuration, as an item in thepolled metadata's blacklistif they are, in fact,banned.private StringThe real name of the student, for example "Edward Snowden".private HashingResultprivate @NonNull HashSet<HashingResult> private @NonNull ClientOptions for the HTTP client that will connect to the server.private ContactMethodsHow the developers can contact the student, for example if the student has sent an email to the developers.private @NonNull DebugLevelHow verbose the application should be.private @NonNull FileThe path to the folder in the file system where the configuration and other application data shall be stored.private jakarta.mail.internet.InternetAddressThe email address of the student used for notifications.private HashingResultprivate @NonNull HashSet<HashingResult> Which of the available PDF files that include the student's grades should be downloaded from Friedolin.private @NonNull FileThe path to the file in the file system where the configuration shall be written to.private @NonNull BooleanWhether the graphical user interface (GUI) of the application should be hidden.private @NonNull DurationHow often the application should fetch the student's grades from the Friedolin server.private static final @NonNull StringThe JSON schema that the content of any input passed to thefromFile(File)method must adhere to.private NotificationsThe user's preferences for receiving notifications about their grades.private @NonNull BooleanWhen repeatedly fetching the student'sexamPDFs, should the existing files be deleted and replaced with the new, updated ones? Iffalse, the current date and time will be prepended to the file names.private char[]The password (login secret) of the Friedolin account.private @NonNull BooleanWhether the application should use KeePassXC to retrieve the Friedolin login credentials.private StringThe username of the Friedolin account to use, for example "es13nsa".private HashingResultprivate @NonNull HashSet<HashingResult> -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateConfiguration(@NonNull String user, char[] password) Creates a new configuration with the given user and password.privateConfiguration(String user, String password, Boolean useKeePassXC) Creates a new configuration with the given user, password and academic degrees. -
Method Summary
Modifier and TypeMethodDescription@NonNull Optional<HashingResult> Forcibly computes theclearnameHashand returns it, even if it already exists.@NonNull Optional<HashingResult> Forcibly computes theemailHashand returns it, even if it already exists.@NonNull Optional<HashingResult> Forcibly computes theuserHash(even if it already exists) and returns it.@NonNull Configurationcopy()static @NonNull ConfigurationCreates a newConfigurationfrom a given JSON file.static @NonNull ConfigurationCreates a newConfigurationfrom a given JSON.getBan()@NonNull Optional<HashingResult> @NonNull HashSet<HashingResult> @NonNull Client@NonNull Optional<ContactMethods> @NonNull Optional<jakarta.mail.internet.InternetAddress> getEmail()@NonNull File@NonNull Optional<HashingResult> @NonNull HashSet<HashingResult> @NonNull Optional<Notifications> @NonNull Optional<char[]> @NonNull Client@NonNull Optional<ContactMethods> getUser()@NonNull Optional<HashingResult> @NonNull HashSet<HashingResult> booleanisBanned()voidvoidWrites this configuration to thefileinJSON format.Deprecated.Used only for Jackson deserialisation.private ClientDeprecated.Used only for Jackson deserialisation.private ContactMethodsDeprecated.Used only for Jackson deserialisation.private StringDeprecated.Used only for Jackson deserialisation.Deprecated.Used only for Jackson deserialisation.Deprecated.Used only for Jackson deserialisation.private LongDeprecated.Used only for Jackson deserialisation.private StringDeprecated.Used only for Jackson deserialisation.private StringDeprecated.Used only for Jackson deserialisation.voidsetAcademicDegrees(@NonNull Set<@NonNull String> academicDegrees) Updates theacademicDegreesfield with the given one.voidsetArgon2Configuration(@NonNull Argon2Configuration argon2Configuration, boolean resetHashes) Updates theargon2Configurationfield with a deep copy of the givenArgon2Configurationand, optionally, deletes theuserHash,clearnameHashandemailHashfields as well as theuserHashes,clearnameHashesandemailHashessets.voidsetBan(@NonNull BannedUser ban) voidsetClearname(@NonNull String clearname) Updates theclearnamefield with the given one, deletes theclearnameHashand empties theclearnameHashes.voidUpdates theclientwith the deep copy of a new one.voidsetContactMethods(@NonNull ContactMethods contactMethods) Updates thecontactMethodsfield with a deep copy of the given one.private voidsetContactMethodsNullable(ContactMethods contactMethods) Deprecated.This method is only used for Jackson deserialisation.private voidsetDebugLevel(String debugLevel) Updates thedebugLevelandfields with the given one.invalid reference
Main.debugLevelvoidsetDebugLevel(@NonNull DebugLevel debugLevel) Updates thedebugLevelandfields with the given one.invalid reference
Main.debugLevelvoidsetDirectory(@NonNull File directory) Updates thedirectoryfield with the given one and also saves it into the persistentPreferencesof theFriedolynclass asdirectory.voidsetEmail(@NonNull jakarta.mail.internet.InternetAddress email) private voidsetExamPDFs(String[] examPDFs) Deprecated.This method is only used for Jackson deserialisation.voidsetExamPDFs(@NonNull Set<ExamsPDF> examsPdfs) Updates theexamPDFsfield with the given one.voidUpdates thefilefield with the given one and also saves it into the persistentPreferencesof theFriedolynclass asfile.voidsetInterval(@NonNull Duration interval) Updates theintervalfield with the given one.private voidsetIntervalMinutes(long interval) Deprecated.Used only for Jackson deserialisation.voidsetNotifications(@NonNull Notifications notifications) Updates thenotificationsfield with the exact reference of the given one.voidsetPassword(char[] password) Updates thepasswordfield with the given one.private voidsetPassword(@NonNull String password) Deprecated.This method is only used for Jackson deserialisation.voidsetReferenceToContactMethods(@NonNull ContactMethods contactMethods) Updates thecontactMethodsfield with the exact reference of the given one.voidsetUseKeePassXC(boolean useKeePassXC) Updates the user's preference whether the KeePassXC password manager should be used to retrieve the user's login credentials for Friedolin, i.e.voidUpdates theuserfield accordingly.@NonNull StringtoJSON()@NonNull StringtoString()@NonNull String
-
Field Details
-
JSON_SCHEMA
The JSON schema that the content of any input passed to thefromFile(File)method must adhere to. -
directory
The path to the folder in the file system where the configuration and other application data shall be stored. Defaults toFriedolyn.DEFAULT_ROOT. -
file
-
user
The username of the Friedolin account to use, for example "es13nsa".- See Also:
-
userHash
- See Also:
-
userHashes
Otherhashes of theuserfield with possiblydifferentArgon2Configurations. Used forbanningusers.- See Also:
-
argon2Configuration
The parameters for the Argon2 hashing algorithm to use when computing theuserHash,clearnameHashandemailHash. -
password
@Nullable private char[] passwordThe password (login secret) of the Friedolin account. There is no two-factor authentication. -
clearname
The real name of the student, for example "Edward Snowden".- See Also:
-
clearnameHash
- See Also:
-
clearnameHashes
- See Also:
-
academicDegrees
-
email
@Nullable private jakarta.mail.internet.InternetAddress emailThe email address of the student used for notifications.- See Also:
-
emailHash
- See Also:
-
emailHashes
Otherhashes of theemailfield with possiblydifferentArgon2Configurations. Used forbanningusers.- See Also:
-
examPDFs
-
overwriteExistingExamsPDFs
-
interval
How often the application should fetch the student's grades from the Friedolin server. Defaults toFriedolyn.DEFAULT_INTERVAL. Must be at leastFriedolyn.MINIMUM_INTERVALand at mostFriedolyn.MAXIMUM_INTERVAL. -
client
Options for the HTTP client that will connect to the server. -
contactMethods
How the developers can contact the student, for example if the student has sent an email to the developers. -
debugLevel
How verbose the application should be. Defaults toDebugLevel.WARN. -
hideGraphicalUserInterface
Whether the graphical user interface (GUI) of the application should be hidden. Defaults tofalse. This has nothing to do with theHeadlessBrowser. -
useKeePassXC
Whether the application should use KeePassXC to retrieve the Friedolin login credentials. Defaults tofalse. If true, theuserandpasswordfields may be null; then they need to be requested from KeePassXC by callingKeePassXC.getFriedolinLogins(). This might fail though, then the application should just throw an exception. -
notifications
The user's preferences for receiving notifications about their grades. -
ban
The student represented by this configuration, as an item in thepolled metadata's blacklistif they are, in fact,banned. -
ALLOWED_CONFIGURATION_FILENAMES
Default file names for the configuration that will be used if no explicit file name is specified.
-
-
Constructor Details
-
Configuration
public Configuration(@NonNull @NonNull String user, char[] password) throws IllegalArgumentException Creates a new configuration with the given user and password.- Parameters:
user- The username of the Friedolin account to use, for example "es13nsa".password- The password of the Friedolin account.- Throws:
IllegalArgumentException- If the user is empty or if the password is null or empty.
-
Configuration
private Configuration(@Nullable String user, @Nullable String password, @Nullable Boolean useKeePassXC) throws IllegalArgumentException Creates a new configuration with the given user, password and academic degrees.This constructor only exists for
fromFile(File)to work properly (when no directory is specified in the configuration file).- Parameters:
user- The username of the Friedolin account to use, for example "es13nsa". Must not be empty.password- The password of the Friedolin account. Will be stored as achar[]for security reasons. Must not be empty.- Throws:
IllegalArgumentException- SeesetUser(String),setPassword(char[]).
-
Configuration
private Configuration()Creates a new configuration without auserand without apassword. This constructor is only to be used by thecopy()method in the case that the currently setuserandpasswordfields are null (this is the case whenuseKeePassXCis set totrue).All other callers are obliged to provide login credentials via
Configuration(String, char[]). If they want to use KeePassXC, they have no choice but to retrieve the login credentials from KeePassXC before creating the configuration.
-
-
Method Details
-
setUser
Updates theuserfield accordingly. If thecontactMethodsfield is already set, itsuserfield will be updated as well, otherwise a newContactMethodsobject will be created with the given user. If the new user name not equal to the current one, theuserHashfield will be deleted.- Parameters:
user- The username of the Friedolin account to use, for example "es13nsa". Must not be empty.- Throws:
IllegalArgumentException- If the user is empty.
-
setArgon2Configuration
public void setArgon2Configuration(@NonNull @NonNull Argon2Configuration argon2Configuration, boolean resetHashes) Updates theargon2Configurationfield with a deep copy of the givenArgon2Configurationand, optionally, deletes theuserHash,clearnameHashandemailHashfields as well as theuserHashes,clearnameHashesandemailHashessets. Does nothing if the given configuration isequalto the current one. -
computeUserHash
Forcibly computes theuserHash(even if it already exists) and returns it. Adds the hash to theuserHashesset if it is not already present.- Returns:
- The Argon2 hash of the
user namefield. Empty if the user name is not set.
-
computeClearnameHash
Forcibly computes theclearnameHashand returns it, even if it already exists. Adds the hash to theclearnameHashesset if it is not already present.- Returns:
- The Argon2 hash of the
clear namefield. Empty if the clear name is not set.
-
computeEmailHash
Forcibly computes theemailHashand returns it, even if it already exists. Adds the hash to theemailHashesset if it is not already present.- Returns:
- The Argon2 hash of the
emailfield. Empty if the email is not set.
-
setPassword
public void setPassword(char[] password) Updates thepasswordfield with the given one.- Parameters:
password- The password of the student's Friedolin account.- Throws:
IllegalArgumentException- If the password is empty.
-
setPassword
@Deprecated private void setPassword(@NonNull @NonNull String password) throws IllegalArgumentException Deprecated.This method is only used for Jackson deserialisation. UsesetPassword(char[])instead.Updates thepasswordfield with the given one.- Parameters:
password- The password of the Friedolin account. Will be stored as achar[]for security reasons. Must not be empty.- Throws:
IllegalArgumentException- If the password is empty.- See Also:
-
setAcademicDegrees
public void setAcademicDegrees(@NonNull @NonNull Set<@NonNull String> academicDegrees) throws IllegalArgumentException Updates theacademicDegreesfield with the given one.- Parameters:
academicDegrees- The academic degrees that the student is currently pursuing, for example "Abschluss 82 Bachelor of Science". Must not be empty. Must not contain null or blank strings.- Throws:
IllegalArgumentException- If the set is empty or if there's a null or blank academic degrees in the given set.
-
setEmail
public void setEmail(@NonNull @NonNull jakarta.mail.internet.InternetAddress email) throws IllegalArgumentException Updates theemailfield with the given one, deletes theemailHashand empties theemailHashes. Does nothing if the new e-mailequalsthe current one.- Parameters:
email- The email address of the student used for notifications. Must be a valid university email address, for exampleedward.snowden@uni-jena.de.- Throws:
IllegalArgumentException- If the email is not a valid university email address.
-
setClearname
Updates theclearnamefield with the given one, deletes theclearnameHashand empties theclearnameHashes. Does nothing if the new clear nameequalsthe current one.- Parameters:
clearname- The real name of the student, for example "Edward Snowden". Must not be empty.- Throws:
IllegalArgumentException- If the clear name is empty.
-
resetClearname
public void resetClearname() -
setDirectory
Updates thedirectoryfield with the given one and also saves it into the persistentPreferencesof theFriedolynclass asdirectory.- Parameters:
directory- The directory to use for the configuration. Must exist and be readable and writable.- Throws:
IllegalArgumentException- If the directory is null, does not exist, is not a directory, is not readable or is not writable.
-
setFile
Updates thefilefield with the given one and also saves it into the persistentPreferencesof theFriedolynclass asfile.- Parameters:
file- The path that the configuration should be written to. Not required to exist. If it exists, it must be a file (not a directory), readable and writable.- Throws:
IllegalArgumentException- If the file exists but- is not a file,
- is not readable or
- is not writable.
-
setIntervalMinutes
Deprecated.Used only for Jackson deserialisation. UsesetInterval(Duration)instead.- Parameters:
interval- Theintervalinminutes. Must be at leastFriedolyn.MINIMUM_INTERVALand at mostFriedolyn.MAXIMUM_INTERVAL.- Throws:
IllegalArgumentException- If the interval is less thanFriedolyn.MINIMUM_INTERVALor greater thanFriedolyn.MAXIMUM_INTERVAL.
-
setInterval
Updates theintervalfield with the given one.- Parameters:
interval- How often the application should fetch the student's grades from the Friedolin server. Must be at leastFriedolyn.MINIMUM_INTERVALand at mostFriedolyn.MAXIMUM_INTERVAL.- Throws:
IllegalArgumentException- If the interval is less thanFriedolyn.MINIMUM_INTERVALor greater thanFriedolyn.MAXIMUM_INTERVAL.
-
setDebugLevel
Updates thedebugLevelandfields with the given one.invalid reference
Main.debugLevel- Parameters:
debugLevel- How verbose the application should be.
-
setDebugLevel
Updates thedebugLevelandfields with the given one.invalid reference
Main.debugLevel- Parameters:
debugLevel- How verbose the application should be. If it is null or does not match any member of theDebugLevelenum, the field will not be updated.
-
setExamPDFs
Updates theexamPDFsfield with the given one.- Parameters:
examsPdfs- Which of the available PDF files that include the student's grades should be downloaded from Friedolin.- Implementation Note:
Lombokrefuses to generate aSetterbecause ofsetExamPDFs(String[]).
-
setExamPDFs
Deprecated.This method is only used for Jackson deserialisation. UsesetExamPDFs(Set)instead.Updates theexamPDFsfield with the given one.- Parameters:
examPDFs- Which of the available PDF files that include the student's grades should be downloaded from Friedolin. Will be treated as an empty set if it is null or if the only item is null or empty. All non-null non-empty items must be valid members of theExamsPDFenum.- Throws:
IllegalArgumentException- If any of the given non-null non-empty strings is not a member of theExamsPDFenum.
-
setClient
-
getClient
-
getReferenceToClient
- Returns:
- The actual object reference of the
clientfield. Only use this method if you are sure that you actually need the reference. If you only need to read the data in it, usegetClient()instead.
-
serialiseClient
Deprecated.Used only for Jackson deserialisation. UsegetClient()instead.- Returns:
- The
clientif it's not thedefault one,nullotherwise.
-
getNotifications
- Returns:
- A deep copy of the current
notifications(does NOT return the actual reference, for security reasons).
-
getContactMethods
- Returns:
- A deep copy of the current
contactMethods(does NOT return the actual reference, for security reasons). UsegetReferenceToContactMethods()if you need the actual reference. - See Also:
-
serialiseContactMethods
Deprecated.Used only for Jackson deserialisation. UsegetContactMethods()instead.- Returns:
- The
contactMethodsif they're not thedefault ones,nullotherwise.
-
setContactMethods
Updates thecontactMethodsfield with a deep copy of the given one.- Parameters:
contactMethods- The user's preferences for being contacted by the developers.
-
setReferenceToContactMethods
Updates thecontactMethodsfield with the exact reference of the given one.- Parameters:
contactMethods- The user's preferences for being contacted by the developers.
-
setContactMethodsNullable
Deprecated.This method is only used for Jackson deserialisation. UsesetContactMethods(ContactMethods)instead.Updates thecontactMethodsfield with the given one.- Parameters:
contactMethods- The user's preferences for being contacted by the developers. If null, will be ignored.
-
setNotifications
public void setNotifications(@NonNull @NonNull Notifications notifications) throws IllegalArgumentException Updates thenotificationsfield with the exact reference of the given one.- Parameters:
notifications- The user's preferences for receiving notifications about their grades.- Throws:
IllegalArgumentException- If no notifier is set.
-
getReferenceToContactMethods
- Returns:
- The actual object reference of the
contactMethodsfield. Only use this method if you are sure that you actually need the reference. If you only need to read the data in it, usegetContactMethods()instead. - See Also:
-
getEmailDirectory
- Returns:
- The directory in the file system where copies of all e-mails sent by the user to the developers shall
be stored. It is NOT guaranteed that the directory exists! The directory is called
emailsand is located in theFriedolyn directory root, such as~/.friedolyn/emails.
-
getUser
- Returns:
- The username of the student's Friedolin account. May be empty if
useKeePassXCis set totrue. In that case, the username needs to be retrieved from the KeePassXC password manager. UseKeePassXC.getFriedolinLogins()for that. - See Also:
-
getUserHash
-
getUserHashes
- Returns:
- A deep copy of the current
argon2Configuration(does NOT return the actual reference, for security reasons).
-
getClearnameHash
-
getClearnameHashes
- Returns:
- A deep copy of the current
clearnameHashes(does NOT return the actual reference, for security reasons).
-
getEmailHash
-
getEmailHashes
- Returns:
- A deep copy of the current
emailHashes(does NOT return the actual reference, for security reasons).
-
isBanned
-
getBan
- Returns:
- The user represented by this configuration as a
BannedUserif they arebanned, empty if they are not banned.
-
setBan
-
getPassword
- Returns:
- The password of the Friedolin account. May be empty if
useKeePassXCis set totrue. In that case, the password needs to be retrieved from the KeePassXC password manager. UseKeePassXC.getFriedolinLogins()for that. - See Also:
-
serialiseUser
Deprecated.Used only for Jackson deserialisation. UsegetUser()instead.- Returns:
- The
username ifuseKeePassXCis set tofalse,nullotherwise.
-
serialisePassword
Deprecated.Used only for Jackson deserialisation. UsegetPassword()instead.- Returns:
- The
passwordifuseKeePassXCis set tofalse,nullotherwise.
-
serialiseAcademicDegrees
Deprecated.Used only for Jackson deserialisation. Useinstead.invalid reference
#getAcademicDegrees()- Returns:
- The
academicDegreesif they're not the default ones,nullotherwise. - Implementation Note:
- If two sets A and B are equal, then every element of A is also an element of B and vice versa. If we remove all B elements from A (and vice versa) and then both sets are empty, we know that they contained the exact same elements, i.e. they were equal.
-
serialiseExamsPDFs
Deprecated.Used only for Jackson deserialisation. Useinstead.invalid reference
#getExamPDFs()- Returns:
- The
examPDFsif they're not the default ones,nullotherwise. - Implementation Note:
- If two sets A and B are equal, then every element of A is also an element of B and vice versa. If we remove all B elements from A (and vice versa) and then both sets are empty, we know that they contained the exact same elements, i.e. they were equal.
-
serialiseInterval
Deprecated.Used only for Jackson deserialisation. Useinstead.invalid reference
#getInterval()- Returns:
- The
intervalif it's not the default one,nullotherwise.
-
serialiseDebugLevel
Deprecated.Used only for Jackson deserialisation. Useinstead.invalid reference
#getDebugLevel()- Returns:
- The
debugLevelif it's not the default one,nullotherwise.
-
getClearname
- Returns:
- The
real name of the studentas indicated in the University of Jena's Friedolin system, for exampleEdward Snowden. Empty if it has not been fetched yet.
-
getEmail
- Returns:
- The student's university e-mail address as indicated by the Friedolin system, for example
edward.snowden@uni -jena.de. Empty if it has not been fetched yet.
-
serialiseEmail
Deprecated.Used only for Jackson deserialisation. UsegetEmail()instead.- Returns:
- The
emailaddress if it's not the default one,nullotherwise.
-
setUseKeePassXC
public void setUseKeePassXC(boolean useKeePassXC) Updates the user's preference whether the KeePassXC password manager should be used to retrieve the user's login credentials for Friedolin, i.e.userandpassword. If this is set totrue, theuserandpasswordfields will not be included in theJSON representationof this configuration.- Parameters:
useKeePassXC-trueif KeePassXC should be used,falseotherwise.- See Also:
-
saveToFile
Writes this configuration to thefileinJSON format. Does not care if the file already exists, it will be overwritten if it does. If necessary, all parent directories of the file will be created.- Throws:
IOException- If thefilecannot be written to.SecurityException
-
fromFile
@NonNull public static @NonNull Configuration fromFile(File file) throws IOException, com.fasterxml.jackson.core.exc.StreamReadException, com.fasterxml.jackson.databind.DatabindException, IllegalArgumentException, SecurityException, OutOfMemoryError, InvalidPathException Creates a newConfigurationfrom a given JSON file.- Parameters:
file- The JSON file that contains the properties of theConfigurationto be created. Must be a valid JSON file. Required properties:-
user(String): The username of the Friedolin account to use, for example "es13nsa". password(String): The password of the Friedolin account.-
academicDegrees(String): The academic degrees that the student is currently pursuing, for example "Abschluss 82 Bachelor of Science".
directoryof the configuration. If that is not possible, then~/.friedolynwill be used. (UsesetDirectory(File)if you don't like that location.)For more information on how the JSON file must be formatted, see the JSON schema.
-
- Returns:
- The configuration created from the given file.
- Throws:
IOException- SeeObjectMapper.readValue(File, Class).com.fasterxml.jackson.core.exc.StreamReadException- SeeObjectMapper.readValue(File, Class).com.fasterxml.jackson.databind.DatabindException- SeeObjectMapper.readValue(File, Class).IllegalArgumentException- If the configuration does not include adirectory, but the file's parent directory and the default directory are both invalid.SecurityExceptionOutOfMemoryErrorInvalidPathException
-
fromJSON
@NonNull public static @NonNull Configuration fromJSON(String json) throws IOException, IllegalArgumentException, SecurityException, OutOfMemoryError Creates a newConfigurationfrom a given JSON.- Parameters:
json- The JSON string that represents aConfiguration. Required properties:-
user(String): The username of the Friedolin account to use, for example "es13nsa". password(String): The password of the Friedolin account.-
academicDegrees(String): The academic degrees that the student is currently pursuing, for example "Abschluss 82 Bachelor of Science".
-
- Returns:
- The configuration created from the given JSON.
- Throws:
IllegalArgumentException- If the JSON does not adhere to the schema or ifuseKeePassXCis set to false, but nopasswordis specified.IOException- SeeObjectMapper.readValue(String, Class).SecurityException- SeeValidatorFactory.validate(String, String).OutOfMemoryError- SeeObjectMapper.readValue(String, Class).
-
copy
- Specified by:
copyin interfaceCopyable<Configuration>- Returns:
- A deep copy of this configuration, i.e. a new instance with the same properties but different references.
-
toJSON
-
toString
- Specified by:
toStringin interfaceRedactable- Overrides:
toStringin classObject- Returns:
- A string representation of this configuration with all its properties, including sensitive data.
- See Also:
-
toStringRedacted
- Specified by:
toStringRedactedin interfaceRedactable- Returns:
- A string representation of this configuration with all its properties. Sensitive data will be redacted
according to the policy specified by the
debugLevel. - See Also:
-