Add pluggable abstraction for applying custom sanitization rules
Closes gh-27840pull/27856/head
parent
211532f08d
commit
253f98c3e7
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.boot.actuate.endpoint;
|
||||
|
||||
import org.springframework.core.env.PropertySource;
|
||||
|
||||
/**
|
||||
* Value object that represents the data that can be used by a {@link SanitizingFunction}.
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
* @since 2.6.0
|
||||
**/
|
||||
public final class SanitizableData {
|
||||
|
||||
/**
|
||||
* Represents a sanitized value.
|
||||
*/
|
||||
public static final String SANITIZED_VALUE = "******";
|
||||
|
||||
private final PropertySource<?> propertySource;
|
||||
|
||||
private final String key;
|
||||
|
||||
private final Object value;
|
||||
|
||||
/**
|
||||
* Create a new {@link SanitizableData} instance.
|
||||
* @param propertySource the property source that provided the data or {@code null}.
|
||||
* @param key the data key
|
||||
* @param value the data value
|
||||
*/
|
||||
public SanitizableData(PropertySource<?> propertySource, String key, Object value) {
|
||||
this.propertySource = propertySource;
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the property source that provided the data or {@code null} If the data was
|
||||
* not from a {@link PropertySource}.
|
||||
* @return the property source that provided the data
|
||||
*/
|
||||
public PropertySource<?> getPropertySource() {
|
||||
return this.propertySource;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the key of the data.
|
||||
* @return the data key
|
||||
*/
|
||||
public String getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the value of the data.
|
||||
* @return the data value
|
||||
*/
|
||||
public Object getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a new {@link SanitizableData} instance with a different value.
|
||||
* @param value the new value (often {@link #SANITIZED_VALUE}
|
||||
* @return a new sanitizable data instance
|
||||
*/
|
||||
public SanitizableData withValue(Object value) {
|
||||
return new SanitizableData(this.propertySource, this.key, value);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* https://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.springframework.boot.actuate.endpoint;
|
||||
|
||||
/**
|
||||
* Function that takes a {@link SanitizableData} and applies sanitization to the value, if
|
||||
* necessary. Can be used by a {@link Sanitizer} to determine the sanitized value.
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
* @since 2.6.0
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface SanitizingFunction {
|
||||
|
||||
/**
|
||||
* Apply the sanitiing function to the given data.
|
||||
* @param data the data to sanitize
|
||||
* @return the sanitized data or the original instance is no sanitization is applied
|
||||
*/
|
||||
SanitizableData apply(SanitizableData data);
|
||||
|
||||
}
|
Loading…
Reference in New Issue