Class CaptureDecorator
- java.lang.Object
-
- org.forgerock.openig.decoration.helper.AbstractDecorator
-
- org.forgerock.openig.decoration.capture.CaptureDecorator
-
- All Implemented Interfaces:
Decorator
public class CaptureDecorator extends AbstractDecorator
The capture decorator can decorates bothFilterandHandlerinstances. It enables the user to see the messages coming in and out of the decorated object.Multiple input/output can be intercepted:
CapturePoint.ALL: Prints all of the messagesCapturePoint.FILTERED_REQUEST: Prints the outgoing request (Filter only)CapturePoint.FILTERED_RESPONSE: Prints the outgoing responseCapturePoint.REQUEST: Prints incoming + outgoing requestCapturePoint.RESPONSE: Prints incoming + outgoing responseCapturePoint.NONE: Disable capture
The capture decorator can be configured to globally enable entity capture using the captureEntity boolean attribute (default to{ "name": "capture", "type": "CaptureDecorator", "config": { "captureEntity": false, "captureContext": false } }false). To set a limit on the maximum length of entities to capture, use maxEntityLength and set it to a value in bytes, the default is 512K. To capture the context at the capture point as well, use the captureContext boolean attribute (default tofalse). To mask values from headers and/or values from the attributes context, use the optional masks section to match by header and/or attribute name and mask the actual value. The name to match can be a regular expression. To override the default mask value of *****, provide the optional mask to set a different mask value.{ "name": "capture", "type": "CaptureDecorator", "config": { "masks": { "headers": [ "x-token" ], "attributes": [ "replay" ], "mask": "*** my mask value ***" } } }To decorate a component, just add the decorator declaration next to the
configelement:Notice that the attribute name in the decorated object has to be the same as the decorator heap object name ({ "type": "...", "capture": [ "FILTERED_REQUEST", "RESPONSE" ], "config": { ... } }capturein our example). A default capture decorator is automatically created when IG starts. It can be overridden in the configuration files if default values are not satisfying.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCaptureDecorator.HeapletCreates and initializes a CaptureDecorator in a heap environment.
-
Constructor Summary
Constructors Constructor Description CaptureDecorator(String name, boolean captureEntity, boolean captureContext)Builds a newcapturedecorator.CaptureDecorator(String name, boolean captureEntity, boolean captureContext, int maxEntityLength, KeyValueProcessor headerProcessor, KeyValueProcessor attributeProcessor, KeyValueProcessor trailerProcessor)Builds a newcapturedecorator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaccepts(Class<?> type)Returnstrueif this decorator is compatible with the provided component type.DecorationHandledecorate(Object delegate, JsonValue decoratorConfig, Context context)Decorates the provideddelegateinstance with the provideddecoratorConfigconfiguration.-
Methods inherited from class org.forgerock.openig.decoration.helper.AbstractDecorator
getLogger
-
-
-
-
Constructor Detail
-
CaptureDecorator
public CaptureDecorator(String name, boolean captureEntity, boolean captureContext)
Builds a newcapturedecorator.- Parameters:
name- The name of this decoratorcaptureEntity-trueif the decorator needs to capture the entity,falseotherwisecaptureContext-trueif the decorator needs to capture the context,falseotherwise
-
CaptureDecorator
public CaptureDecorator(String name, boolean captureEntity, boolean captureContext, int maxEntityLength, KeyValueProcessor headerProcessor, KeyValueProcessor attributeProcessor, KeyValueProcessor trailerProcessor)
Builds a newcapturedecorator.- Parameters:
name- The name of this decoratorcaptureEntity-trueif the decorator needs to capture the entity,falseotherwisecaptureContext-trueif the decorator needs to capture the context,falseotherwisemaxEntityLength- Set the maximum entity length to capture ifcaptureEntityis enabled.headerProcessor- TheKeyValueProcessorto apply to header values.attributeProcessor- TheKeyValueProcessorto apply to attribute values.trailerProcessor- TheKeyValueProcessorto apply to trailer values.
-
-
Method Detail
-
accepts
public boolean accepts(Class<?> type)
Description copied from interface:DecoratorReturnstrueif this decorator is compatible with the provided component type. Note that a return value oftruedoes not necessarily indicate that decoration will be performed since it may also depend on other factors- Parameters:
type- type under test- Returns:
trueif the decorator can decorate instance of the given type,falseotherwise.
-
decorate
public DecorationHandle decorate(Object delegate, JsonValue decoratorConfig, Context context) throws HeapException
Description copied from interface:DecoratorDecorates the provideddelegateinstance with the provideddecoratorConfigconfiguration. The implementation should take care of not changing the base type of the delegate.- Parameters:
delegate- instance to be decorateddecoratorConfig- the decorator configuration to applycontext- contextual information of the decorated instance- Returns:
- a handle of the decoration that was setup, never
null. - Throws:
HeapException- when decoration fails
-
-