com.feilong.json.processor.SensitiveWordsJsonValueProcessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of feilong Show documentation
Show all versions of feilong Show documentation
feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.
/*
* Copyright (C) 2008 feilong
*
* 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 com.feilong.json.processor;
import com.feilong.json.JsonUtil;
import com.feilong.json.builder.JsonConfigBuilder;
import com.feilong.lib.json.JsonConfig;
import com.feilong.lib.json.processors.JsonValueProcessor;
/**
* 过滤敏感信息,最直接的就是像密码这样的内容,不可以直接明文输出在控制台或者日志文件,需要转换成***字眼.
*
* 示例:
*
*
*
*
*
* User user = new User("feilong1", 24);
* user.setPassword("123456");
*
* JsonValueProcessor jsonValueProcessor = SensitiveWordsJsonValueProcessor.INSTANCE;
*
* Map{@code } propertyNameAndJsonValueProcessorMap = new HashMap{@code <>}();
* propertyNameAndJsonValueProcessorMap.put("password", jsonValueProcessor);
* propertyNameAndJsonValueProcessorMap.put("age", jsonValueProcessor);
*
* JavaToJsonConfig javaToJsonConfig = new JavaToJsonConfig();
* javaToJsonConfig.setPropertyNameAndJsonValueProcessorMap(propertyNameAndJsonValueProcessorMap);
* javaToJsonConfig.setIncludes("name", "age", "password");
*
* LOGGER.debug(JsonUtil.format(user, javaToJsonConfig));
*
*
*
* 返回:
*
*
* {
* "password": "******",
* "age": "******",
* "name": "feilong1"
* }
*
*
*
*
* 说明:
*
*
* 目前 {@link JsonUtil} 内置对"password", "key" 两个字眼的属性名字,默认是显示成******,参见
* {@link JsonConfigBuilder#SENSITIVE_WORDS_PROPERTY_NAMES} 以及 {@link JsonConfigBuilder#registerDefaultJsonValueProcessor(JsonConfig)}
*
*
* @author feilong
* @since 1.2.2
*/
public class SensitiveWordsJsonValueProcessor extends AbstractJsonValueProcessor{
/** The default sensitive words. */
private static final String DEFAULT_SENSITIVE_WORDS = "******";
//---------------------------------------------------------------
/** Singleton instance. */
public static final JsonValueProcessor INSTANCE = new SensitiveWordsJsonValueProcessor();
//---------------------------------------------------------------
/*
* (non-Javadoc)
*
* @see com.feilong.tools.jsonlib.processor.AbstractJsonValueProcessor#processValue(java.lang.Object, net.sf.json.JsonConfig)
*/
@Override
protected Object processValue(Object value,JsonConfig jsonConfig){
return null == value ? null : DEFAULT_SENSITIVE_WORDS;
}
}