
org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jasypt-spring31 Show documentation
Show all versions of jasypt-spring31 Show documentation
Java library which enables encryption in java apps with minimum effort.
/*
* =============================================================================
*
* Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* =============================================================================
*/
package org.jasypt.spring31.properties;
import java.io.IOException;
import java.util.Properties;
import org.jasypt.commons.CommonUtils;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.properties.PropertyValueEncryptionUtils;
import org.jasypt.util.text.TextEncryptor;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
/**
*
*
*
* @since 1.9.0
*
* @author Daniel Fernández
*
*/
public final class EncryptablePropertySourcesPlaceholderConfigurer
extends PropertySourcesPlaceholderConfigurer {
/*
* Only one of these instances will be initialized, the other one will be
* null.
*/
private final StringEncryptor stringEncryptor;
private final TextEncryptor textEncryptor;
/*
* This flag will keep track of whether the "convertProperties()" method
* (which decrypts encrypted property entries) has already been called
* or not.
*
* This is needed because of a bug in Spring 3.1.0.RELEASE:
* https://jira.springsource.org/browse/SPR-8928
*
* This flag will avoid calling "convertProperties()" twice once this
* bug has been solved.
*/
private boolean alreadyConverted = false;
/**
*
* Creates an EncryptablePropertyPlaceholderConfigurer instance
* which will use the passed {@link StringEncryptor} object to decrypt
* encrypted values.
*
*
* @param stringEncryptor
* the {@link StringEncryptor} to be used do decrypt values. It
* can not be null.
*/
public EncryptablePropertySourcesPlaceholderConfigurer(
final StringEncryptor stringEncryptor) {
super();
CommonUtils.validateNotNull(stringEncryptor, "Encryptor cannot be null");
this.stringEncryptor = stringEncryptor;
this.textEncryptor = null;
}
/**
*
* Creates an EncryptablePropertyPlaceholderConfigurer instance which will use the
* passed {@link TextEncryptor} object to decrypt encrypted values.
*
*
* @param textEncryptor
* the {@link TextEncryptor} to be used do decrypt values. It can
* not be null.
*/
public EncryptablePropertySourcesPlaceholderConfigurer(final TextEncryptor textEncryptor) {
super();
CommonUtils.validateNotNull(textEncryptor, "Encryptor cannot be null");
this.stringEncryptor = null;
this.textEncryptor = textEncryptor;
}
/*
* This is needed because of https://jira.springsource.org/browse/SPR-8928
*/
@Override
protected Properties mergeProperties() throws IOException {
final Properties mergedProperties = super.mergeProperties();
convertProperties(mergedProperties);
return mergedProperties;
}
/*
* This is needed because of https://jira.springsource.org/browse/SPR-8928
*/
@Override
protected void convertProperties(final Properties props) {
if (!this.alreadyConverted) {
super.convertProperties(props);
this.alreadyConverted = true;
}
}
/*
* (non-Javadoc)
*
* @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertPropertyValue(java.lang.String)
*/
@Override
protected String convertPropertyValue(final String originalValue) {
if (!PropertyValueEncryptionUtils.isEncryptedValue(originalValue)) {
return originalValue;
}
if (this.stringEncryptor != null) {
return PropertyValueEncryptionUtils.decrypt(originalValue,
this.stringEncryptor);
}
return PropertyValueEncryptionUtils.decrypt(originalValue, this.textEncryptor);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy