Define CommandExceptionResolver bean order
- CommandParserExceptionResolver uses default bean order -100. - Backport #634 - Fixes #635
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022 the original author or authors.
|
* Copyright 2022-2023 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -15,6 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.shell.command;
|
package org.springframework.shell.command;
|
||||||
|
|
||||||
|
import org.springframework.core.Ordered;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to be implemented by objects that can resolve exceptions thrown
|
* Interface to be implemented by objects that can resolve exceptions thrown
|
||||||
* during command processing, in the typical case error response. Implementors
|
* during command processing, in the typical case error response. Implementors
|
||||||
@@ -25,6 +28,11 @@ package org.springframework.shell.command;
|
|||||||
*/
|
*/
|
||||||
public interface CommandExceptionResolver {
|
public interface CommandExceptionResolver {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default precedence related use of {@link Ordered} and {@link Order}.
|
||||||
|
*/
|
||||||
|
int DEFAULT_PRECEDENCE = -100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to resolve the given exception that got thrown during command processing.
|
* Try to resolve the given exception that got thrown during command processing.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017-2022 the original author or authors.
|
* Copyright 2017-2023 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -21,8 +21,10 @@ import org.springframework.beans.factory.ObjectProvider;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.shell.TerminalSizeAware;
|
import org.springframework.shell.TerminalSizeAware;
|
||||||
import org.springframework.shell.command.CommandCatalog;
|
import org.springframework.shell.command.CommandCatalog;
|
||||||
|
import org.springframework.shell.command.CommandExceptionResolver;
|
||||||
import org.springframework.shell.command.CommandParserExceptionResolver;
|
import org.springframework.shell.command.CommandParserExceptionResolver;
|
||||||
import org.springframework.shell.context.ShellContext;
|
import org.springframework.shell.context.ShellContext;
|
||||||
import org.springframework.shell.jline.InteractiveShellRunner;
|
import org.springframework.shell.jline.InteractiveShellRunner;
|
||||||
@@ -33,7 +35,7 @@ import org.springframework.shell.jline.InteractiveShellRunner;
|
|||||||
* @author Eric Bottard
|
* @author Eric Bottard
|
||||||
* @author Janne Valkealahti
|
* @author Janne Valkealahti
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration(proxyBeanMethods = false)
|
||||||
public class ResultHandlerConfig {
|
public class ResultHandlerConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@@ -58,6 +60,7 @@ public class ResultHandlerConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@Order(CommandExceptionResolver.DEFAULT_PRECEDENCE)
|
||||||
public CommandParserExceptionResolver commandParserExceptionResolver() {
|
public CommandParserExceptionResolver commandParserExceptionResolver() {
|
||||||
return new CommandParserExceptionResolver();
|
return new CommandParserExceptionResolver();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,3 +45,11 @@ you want to define exit code there.
|
|||||||
include::{snippets}/ErrorHandlingSnippets.java[tag=my-exception-class]
|
include::{snippets}/ErrorHandlingSnippets.java[tag=my-exception-class]
|
||||||
----
|
----
|
||||||
====
|
====
|
||||||
|
|
||||||
|
Some build in `CommandExceptionResolver` beans are registered to handle common
|
||||||
|
exceptions thrown from command parsing. These are registered with _order_
|
||||||
|
presedence defined in `CommandExceptionResolver.DEFAULT_PRECEDENCE`.
|
||||||
|
As these beans are used in a given order, `@Order` annotation or `Ordered`
|
||||||
|
interface from can be used just like in any other spring app. This
|
||||||
|
is generally useful if you need to control your own beans to get used
|
||||||
|
either before or after a defaults.
|
||||||
|
|||||||
Reference in New Issue
Block a user