/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.props;
import java.util.regex.Matcher;
/**
* Parses the configuration data associated with credential configs. The format of the property string should be like:
*
* <pre>
KeyStoreCredentialConfig
{{trustStore=file:/tmp/my.truststore}{trustStoreType=JKS}}
* </pre>
*
* <p>or</p>
*
* <pre>
{{trustCertificates=file:/tmp/my.crt}}
* </pre>
*
* @author Middleware Services
*/
public class CredentialConfigParser extends PropertyValueParser
{
/** Credential config class found in the config. */
protected static final String DEFAULT_CREDENTIAL_CONFIG_CLASS = "org.ldaptive.ssl.X509CredentialConfig";
/**
* Creates a new credential config parser.
*
* @param config containing configuration data
*/
public CredentialConfigParser(final String config)
{
final Matcher credentialOnlyMatcher = CONFIG_PATTERN.matcher(config);
final Matcher paramsOnlyMatcher = PARAMS_ONLY_CONFIG_PATTERN.matcher(config);
if (credentialOnlyMatcher.matches()) {
initialize(credentialOnlyMatcher.group(1).trim(), credentialOnlyMatcher.group(2).trim());
} else if (paramsOnlyMatcher.matches()) {
initialize(DEFAULT_CREDENTIAL_CONFIG_CLASS, paramsOnlyMatcher.group(1).trim());
}
}
/**
* Returns whether the supplied configuration data contains a credential config.
*
* @param config containing configuration data
*
* @return whether the supplied configuration data contains a credential config
*/
public static boolean isCredentialConfig(final String config)
{
return isConfig(config) || isParamsOnlyConfig(config);
}
}