package com.sequenceiq.cloudbreak.domain.json; import java.util.Optional; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.jasypt.exceptions.EncryptionOperationNotPossibleException; public class EncryptedJsonToString extends JsonToString { private final static StandardPBEStringEncryptor ENCRYPTOR = new StandardPBEStringEncryptor(); { String secret = Optional.ofNullable(System.getProperty("cb.client.secret")).orElse(System.getenv("CB_CLIENT_SECRET")); ENCRYPTOR.setPassword(secret); } @Override public String convertToDatabaseColumn(Json attribute) { String json = super.convertToDatabaseColumn(attribute); return ENCRYPTOR.encrypt(json); } @Override public Json convertToEntityAttribute(String dbData) { String json; try { json = ENCRYPTOR.decrypt(dbData); } catch (EncryptionOperationNotPossibleException e) { json = dbData; } return super.convertToEntityAttribute(json); } }