/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.service;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.xdi.model.SmtpConfiguration;
import org.xdi.oxauth.crypto.signature.SHA256withECDSASignatureVerification;
import org.xdi.oxauth.model.appliance.GluuAppliance;
import org.xdi.service.cache.CacheConfiguration;
import org.xdi.service.cache.InMemoryConfiguration;
import org.xdi.util.StringHelper;
import org.xdi.util.security.StringEncrypter.EncryptionException;
/**
* Holds factory methods to create services
*
* @author Yuriy Movchan Date: 05/22/2015
*/
@ApplicationScoped
@Named
public class ApplicationFactory {
@Inject
private Logger log;
@Inject
private ApplianceService applianceService;
@Inject
private EncryptionService encryptionService;
@Produces @ApplicationScoped @Named("sha256withECDSASignatureVerification")
public SHA256withECDSASignatureVerification getBouncyCastleSignatureVerification() {
return new SHA256withECDSASignatureVerification();
}
@Produces @ApplicationScoped
public CacheConfiguration getCacheConfiguration() {
CacheConfiguration cacheConfiguration = applianceService.getAppliance().getCacheConfiguration();
if (cacheConfiguration == null || cacheConfiguration.getCacheProviderType() == null) {
log.error("Failed to read cache configuration from LDAP. Please check appliance oxCacheConfiguration attribute " +
"that must contain cache configuration JSON represented by CacheConfiguration.class. Applieance DN: " + applianceService.getAppliance().getDn());
log.info("Creating fallback IN-MEMORY cache configuration ... ");
cacheConfiguration = new CacheConfiguration();
cacheConfiguration.setInMemoryConfiguration(new InMemoryConfiguration());
log.info("IN-MEMORY cache configuration is created.");
}
log.info("Cache configuration: " + cacheConfiguration);
return cacheConfiguration;
}
@Produces @ApplicationScoped
public SmtpConfiguration getSmtpConfiguration() {
GluuAppliance appliance = applianceService.getAppliance();
SmtpConfiguration smtpConfiguration = appliance.getSmtpConfiguration();
if (smtpConfiguration == null) {
return null;
}
String password = smtpConfiguration.getPassword();
if (StringHelper.isNotEmpty(password)) {
try {
smtpConfiguration.setPasswordDecrypted(encryptionService.decrypt(password));
} catch (EncryptionException ex) {
log.error("Failed to decript SMTP user password", ex);
}
}
return smtpConfiguration;
}
}