}
else {
GlobalConfigurationResourceResponse configRequest = (GlobalConfigurationResourceResponse) payload;
if (configRequest != null) {
GlobalConfigurationResource resource = configRequest.getData();
try {
if (resource.getSmtpSettings() != null) {
SmtpSettings settings = resource.getSmtpSettings();
getNexusEmailer().setSMTPHostname(settings.getHost());
// lookup old password
String oldPassword = getNexusEmailer().getSMTPPassword();
if (settings.getPassword() == null) {
settings.setPassword("");
}
getNexusEmailer().setSMTPPassword(this.getActualPassword(settings.getPassword(), oldPassword));
getNexusEmailer().setSMTPPort(settings.getPort());
getNexusEmailer().setSMTPSslEnabled(settings.isSslEnabled());
getNexusEmailer().setSMTPTlsEnabled(settings.isTlsEnabled());
if (settings.getUsername() == null) {
settings.setUsername("");
}
getNexusEmailer().setSMTPUsername(settings.getUsername());
getNexusEmailer().setSMTPSystemEmailAddress(
new Address(settings.getSystemEmailAddress().trim()));
}
if (resource.getGlobalConnectionSettings() != null) {
RemoteConnectionSettings s = resource.getGlobalConnectionSettings();
getGlobalRemoteConnectionSettings().setConnectionTimeout(s.getConnectionTimeout() * 1000);
getGlobalRemoteConnectionSettings().setRetrievalRetryCount(s.getRetrievalRetryCount());
getGlobalRemoteConnectionSettings().setQueryString(s.getQueryString());
getGlobalRemoteConnectionSettings().setUserAgentCustomizationString(s.getUserAgentString());
}
setGlobalProxySettings(resource.getRemoteProxySettings(), getGlobalRemoteProxySettings());
getNexusConfiguration().setRealms(resource.getSecurityRealms());
final String anonymousUsername = resource.getSecurityAnonymousUsername();
final String anonymousPassword =
getActualPassword(resource.getSecurityAnonymousPassword(),
getNexusConfiguration().getAnonymousPassword());
if (resource.isSecurityAnonymousAccessEnabled() && !StringUtils.isEmpty(anonymousUsername)
&& !StringUtils.isEmpty(anonymousPassword)) {
getNexusConfiguration().setAnonymousAccess(true, anonymousUsername, anonymousPassword);
}
else if (resource.isSecurityAnonymousAccessEnabled()) {
// the supplied anon auth info is wrong/empty
getLogger().warn(
"Nexus refused to apply configuration, the supplied anonymous username/pwd information is empty.");
throw new PlexusResourceException(Status.CLIENT_ERROR_BAD_REQUEST, getNexusErrorResponse(
"securityAnonymousUsername", "Cannot be empty when Anonynous access is enabled"));
}
else {
getNexusConfiguration().setAnonymousAccess(false, null, null);
}
if (resource.getGlobalRestApiSettings() != null) {
RestApiSettings restApiSettings = resource.getGlobalRestApiSettings();
getGlobalRestApiSettings().setForceBaseUrl(restApiSettings.isForceBaseUrl());
if (StringUtils.isEmpty(resource.getGlobalRestApiSettings().getBaseUrl())) {
getGlobalRestApiSettings().setBaseUrl(null);
}
else {
getGlobalRestApiSettings().setBaseUrl(
new Reference(restApiSettings.getBaseUrl()).getTargetRef().toString());