Class MaskingJsonGenerator
- All Implemented Interfaces:
Versioned
,Closeable
,Flushable
,AutoCloseable
JsonGenerator
that can mask sensitive field values before delegating to a delegate JsonGenerator
.
Identifying field values to mask by path
TheMaskingJsonGenerator
uses a collection of FieldMasker
s
to identify fields to mask by JSON path.
These field maskers are invoked after a new field name is written to determine if the field's value should be masked. If any masker returns a non-null value, then the returned value will be written as the field's value (instead of the original field value). Note that the masked value's type might differ from the fields original type.
Example FieldMasker
s:
Identifying field values to mask by value
TheMaskingJsonGenerator
uses a collection of ValueMasker
s
to mask field values by JSON path and field value.
These value maskers are invoked each time a new number or string scalar value is written to determine if the value should be masked. If all maskers return null, then the value is written as-is (i.e. not masked). If any masker returns non-null, then the returned value will be written as the field value.
Raw values are NOT masked.
It is much more efficient to mask field values by path, rather than by field value.
Therefore, prefer using FieldMasker
s instead of ValueMasker
s whenever possible.
Example value maskers:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonGenerator
JsonGenerator.Feature
-
Field Summary
FieldsFields inherited from class com.fasterxml.jackson.core.util.JsonGeneratorDelegate
delegate, delegateCopyMethods
Fields inherited from class com.fasterxml.jackson.core.JsonGenerator
_cfgPrettyPrinter, DEFAULT_BINARY_WRITE_CAPABILITIES, DEFAULT_TEXTUAL_WRITE_CAPABILITIES, DEFAULT_WRITE_CAPABILITIES
-
Constructor Summary
ConstructorsConstructorDescriptionMaskingJsonGenerator
(JsonGenerator delegate, Collection<FieldMasker> fieldMaskers, Collection<ValueMasker> valueMaskers) -
Method Summary
Modifier and TypeMethodDescriptionvoid
writeArray
(double[] array, int offset, int length) void
writeArray
(int[] array, int offset, int length) void
writeArray
(long[] array, int offset, int length) void
writeBinary
(byte[] data) void
writeBinary
(byte[] data, int offset, int len) void
writeBinary
(Base64Variant b64variant, byte[] data, int offset, int len) int
writeBinary
(Base64Variant b64variant, InputStream data, int dataLength) int
writeBinary
(InputStream data, int dataLength) void
writeBoolean
(boolean state) void
writeEmbeddedObject
(Object object) void
void
void
writeFieldId
(long id) void
void
writeFieldName
(String name) void
void
writeNumber
(double v) void
writeNumber
(float v) void
writeNumber
(int v) void
writeNumber
(long v) void
writeNumber
(short v) void
writeNumber
(String encodedValue) void
void
void
writeObjectId
(Object id) void
writeObjectRef
(Object id) void
writeOmittedField
(String fieldName) void
writeRaw
(char c) void
writeRaw
(char[] text, int offset, int len) void
void
void
void
writeRawUTF8String
(byte[] text, int offset, int length) void
writeRawValue
(char[] text, int offset, int len) void
writeRawValue
(String text) void
writeRawValue
(String text, int offset, int len) void
void
writeStartArray
(int size) void
writeStartArray
(Object forValue) void
writeStartArray
(Object forValue, int size) void
void
writeStartObject
(Object forValue) void
writeStartObject
(Object forValue, int size) void
writeString
(char[] text, int offset, int len) void
void
writeString
(Reader reader, int len) void
writeString
(String text) void
writeTypeId
(Object id) void
writeUTF8String
(byte[] text, int offset, int length) Methods inherited from class com.fasterxml.jackson.core.util.JsonGeneratorDelegate
assignCurrentValue, canOmitFields, canUseSchema, canWriteBinaryNatively, canWriteFormattedNumbers, canWriteObjectId, canWriteTypeId, close, copyCurrentEvent, copyCurrentStructure, currentValue, delegate, disable, enable, flush, getCharacterEscapes, getCodec, getCurrentValue, getDelegate, getFeatureMask, getHighestEscapedChar, getOutputBuffered, getOutputContext, getOutputTarget, getPrettyPrinter, getSchema, getWriteCapabilities, isClosed, isEnabled, overrideFormatFeatures, overrideStdFeatures, setCharacterEscapes, setCodec, setCurrentValue, setFeatureMask, setHighestNonEscapedChar, setPrettyPrinter, setRootValueSeparator, setSchema, useDefaultPrettyPrinter, version, writeArray, writeNumber, writeObject, writePOJO, writeTree
Methods inherited from class com.fasterxml.jackson.core.JsonGenerator
_copyCurrentContents, _copyCurrentFloatValue, _copyCurrentFloatValueExact, _copyCurrentIntValue, _copyCurrentStringValue, _reportError, _reportUnsupportedOperation, _throwInternal, _verifyOffsets, _writeSimpleObject, configure, copyCurrentEventExact, getFormatFeatures, isEnabled, writeArrayFieldStart, writeBinaryField, writeBooleanField, writeNullField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeNumberField, writeObjectField, writeObjectFieldStart, writePOJOField, writeRawValue, writeStringField, writeTypePrefix, writeTypeSuffix
-
Field Details
-
MASK
- See Also:
-
-
Constructor Details
-
MaskingJsonGenerator
public MaskingJsonGenerator(JsonGenerator delegate, Collection<FieldMasker> fieldMaskers, Collection<ValueMasker> valueMaskers) - Parameters:
delegate
- the generator to which to write potentially masked JSONfieldMaskers
-FieldMasker
s to mask fieldsvalueMaskers
-ValueMasker
s to mask values
-
-
Method Details
-
writeArray
- Overrides:
writeArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeArray
- Overrides:
writeArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeArray
- Overrides:
writeArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeFieldName
- Overrides:
writeFieldName
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeFieldName
- Overrides:
writeFieldName
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeFieldId
- Overrides:
writeFieldId
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeBinary
public void writeBinary(Base64Variant b64variant, byte[] data, int offset, int len) throws IOException - Overrides:
writeBinary
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeBinary
- Overrides:
writeBinary
in classJsonGenerator
- Throws:
IOException
-
writeBinary
- Overrides:
writeBinary
in classJsonGenerator
- Throws:
IOException
-
writeBinary
public int writeBinary(Base64Variant b64variant, InputStream data, int dataLength) throws IOException - Overrides:
writeBinary
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeBinary
- Overrides:
writeBinary
in classJsonGenerator
- Throws:
IOException
-
writeBoolean
- Overrides:
writeBoolean
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeEmbeddedObject
- Overrides:
writeEmbeddedObject
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNull
- Overrides:
writeNull
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeNumber
- Overrides:
writeNumber
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeObjectId
- Overrides:
writeObjectId
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeObjectRef
- Overrides:
writeObjectRef
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeOmittedField
- Overrides:
writeOmittedField
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRaw
- Overrides:
writeRaw
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRaw
- Overrides:
writeRaw
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRaw
- Overrides:
writeRaw
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRaw
- Overrides:
writeRaw
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRaw
- Overrides:
writeRaw
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRawValue
- Overrides:
writeRawValue
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeRawUTF8String
- Overrides:
writeRawUTF8String
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartArray
- Overrides:
writeStartArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartArray
- Overrides:
writeStartArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartArray
- Overrides:
writeStartArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartArray
- Overrides:
writeStartArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartObject
- Overrides:
writeStartObject
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartObject
- Overrides:
writeStartObject
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeStartObject
- Overrides:
writeStartObject
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeString
- Overrides:
writeString
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeString
- Overrides:
writeString
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeString
- Overrides:
writeString
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeString
- Overrides:
writeString
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeUTF8String
- Overrides:
writeUTF8String
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeTypeId
- Overrides:
writeTypeId
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeEndArray
- Overrides:
writeEndArray
in classJsonGeneratorDelegate
- Throws:
IOException
-
writeEndObject
- Overrides:
writeEndObject
in classJsonGeneratorDelegate
- Throws:
IOException
-