001/* 002 * JKNIV, SQLegance keeping queries maintainable. 003 * 004 * Copyright (C) 2017, the original author or authors. 005 * 006 * This library is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 2.1 of the License. 010 * 011 * This library is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public 017 * License along with this library; if not, write to the Free Software Foundation, Inc., 018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 019 */ 020package net.sf.jkniv.sqlegance.logger; 021 022import java.util.ArrayList; 023import java.util.List; 024 025/** 026 * Masked the attributes <code>password</code>, <code>passwd</code> and <code>pwd</code> 027 * as <code>****</code>. 028 * 029 * To add new attributes for masking rules see {@link #addAttrName(String)} 030 * 031 * 032 * @author Alisson Gomes 033 * @since 0.6.0 034 */ 035public class SimpleDataMasking implements DataMasking 036{ 037 private static final List<String> sensibleAttr = new ArrayList<String>(); 038 private static final String MASK = "****"; 039 static 040 { 041 sensibleAttr.add("password"); 042 sensibleAttr.add("passwd"); 043 sensibleAttr.add("pwd"); 044 } 045 046 /** 047 * Set new attribute name to masking your value by log API. 048 * @param nameAttribute attribute name to mask 049 */ 050 public static void addAttrName(String nameAttribute) 051 { 052 sensibleAttr.add(nameAttribute); 053 } 054 055 public Object mask(String attributeName, Object data) 056 { 057 return (sensibleAttr.contains(attributeName) ? MASK : data); 058 } 059 060}