Class StacktraceFingerprintingRecoveryStrategy<E extends Exception>
java.lang.Object
org.springframework.cloud.dataflow.completion.StacktraceFingerprintingRecoveryStrategy<E>
- All Implemented Interfaces:
RecoveryStrategy<E>
- Direct Known Subclasses:
AppsAfterDoublePipeRecoveryStrategy,AppsAfterPipeRecoveryStrategy,ConfigurationPropertyValueHintRecoveryStrategy,UnfinishedConfigurationPropertyNameRecoveryStrategy
public abstract class StacktraceFingerprintingRecoveryStrategy<E extends Exception>
extends Object
implements RecoveryStrategy<E>
A recovery strategy that will trigger if the parser failure is similar to that of some
sample unfinished stream definition. The match is decided by analyzing the top frames
of the stack trace emitted by the parser when it encounters the ill formed input.
Multiple fingerprints are supported, as the control flow in the parser code may be
different depending on the form of the expression. For example, for the rule
stream = module (| module)* , the pseudo code for the parser may look like
stream() {
module(); (1)
while(moreInput()) {
swallowPipe();
module(); (2)
}
}
In that setup, whether we're dealing with the first module, or a subsequent module,
stack frames would be different (see (1) and (2)).- Author:
- Eric Bottard
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionStacktraceFingerprintingRecoveryStrategy(Class<E> exceptionClass, StreamDefinitionService streamDefinitionService, String... samples) Construct a new StacktraceFingerprintingRecoveryStrategy given the parser, and the expected exception class to be thrown for sample fragments of a stream definition that is to be parsed. -
Method Summary
Modifier and TypeMethodDescriptionbooleanshouldTrigger(String dslStart, Exception exception) Whether this completion should be triggered.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.cloud.dataflow.completion.RecoveryStrategy
addProposals
-
Field Details
-
streamDefinitionService
-
-
Constructor Details
-
StacktraceFingerprintingRecoveryStrategy
public StacktraceFingerprintingRecoveryStrategy(Class<E> exceptionClass, StreamDefinitionService streamDefinitionService, String... samples) Construct a new StacktraceFingerprintingRecoveryStrategy given the parser, and the expected exception class to be thrown for sample fragments of a stream definition that is to be parsed.- Parameters:
exceptionClass- the expected exception that results from parsing the sample fragment stream definitions. Stack frames from the thrown exception are used to store the fingerprint of this exception thrown by the parser.streamDefinitionService- the service to handle stream definitionsamples- the sample fragments of stream definitions.
-
-
Method Details
-
shouldTrigger
Description copied from interface:RecoveryStrategyWhether this completion should be triggered.- Specified by:
shouldTriggerin interfaceRecoveryStrategy<E extends Exception>- Parameters:
dslStart- the partial DSL textexception- the exception thrown when parsing the DSL text- Returns:
- if proposals to complete the DSL should be provided
-