Replace if with switch where feasible

See gh-31916
This commit is contained in:
Yanming Zhou 2023-12-28 15:44:55 +08:00 committed by Stéphane Nicoll
parent ea5ef098cf
commit cfa3aa001f
7 changed files with 85 additions and 157 deletions

View File

@ -404,24 +404,14 @@ class ConfigBeanDefinitionParser implements BeanDefinitionParser {
*/ */
private Class<?> getAdviceClass(Element adviceElement, ParserContext parserContext) { private Class<?> getAdviceClass(Element adviceElement, ParserContext parserContext) {
String elementName = parserContext.getDelegate().getLocalName(adviceElement); String elementName = parserContext.getDelegate().getLocalName(adviceElement);
if (BEFORE.equals(elementName)) { return switch (elementName) {
return AspectJMethodBeforeAdvice.class; case BEFORE -> AspectJMethodBeforeAdvice.class;
} case AFTER -> AspectJAfterAdvice.class;
else if (AFTER.equals(elementName)) { case AFTER_RETURNING_ELEMENT -> AspectJAfterReturningAdvice.class;
return AspectJAfterAdvice.class; case AFTER_THROWING_ELEMENT -> AspectJAfterThrowingAdvice.class;
} case AROUND -> AspectJAroundAdvice.class;
else if (AFTER_RETURNING_ELEMENT.equals(elementName)) { default -> throw new IllegalArgumentException("Unknown advice kind [" + elementName + "].");
return AspectJAfterReturningAdvice.class; };
}
else if (AFTER_THROWING_ELEMENT.equals(elementName)) {
return AspectJAfterThrowingAdvice.class;
}
else if (AROUND.equals(elementName)) {
return AspectJAroundAdvice.class;
}
else {
throw new IllegalArgumentException("Unknown advice kind [" + elementName + "].");
}
} }
/** /**

View File

@ -182,16 +182,11 @@ public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser {
if (element.hasAttribute(SCOPED_PROXY_ATTRIBUTE)) { if (element.hasAttribute(SCOPED_PROXY_ATTRIBUTE)) {
String mode = element.getAttribute(SCOPED_PROXY_ATTRIBUTE); String mode = element.getAttribute(SCOPED_PROXY_ATTRIBUTE);
if ("targetClass".equals(mode)) { switch (mode) {
scanner.setScopedProxyMode(ScopedProxyMode.TARGET_CLASS); case "targetClass" -> scanner.setScopedProxyMode(ScopedProxyMode.TARGET_CLASS);
} case "interfaces" -> scanner.setScopedProxyMode(ScopedProxyMode.INTERFACES);
else if ("interfaces".equals(mode)) { case "no" -> scanner.setScopedProxyMode(ScopedProxyMode.NO);
scanner.setScopedProxyMode(ScopedProxyMode.INTERFACES); default ->
}
else if ("no".equals(mode)) {
scanner.setScopedProxyMode(ScopedProxyMode.NO);
}
else {
throw new IllegalArgumentException("scoped-proxy only supports 'no', 'interfaces' and 'targetClass'"); throw new IllegalArgumentException("scoped-proxy only supports 'no', 'interfaces' and 'targetClass'");
} }
} }
@ -234,19 +229,20 @@ public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser {
String filterType = element.getAttribute(FILTER_TYPE_ATTRIBUTE); String filterType = element.getAttribute(FILTER_TYPE_ATTRIBUTE);
String expression = element.getAttribute(FILTER_EXPRESSION_ATTRIBUTE); String expression = element.getAttribute(FILTER_EXPRESSION_ATTRIBUTE);
expression = parserContext.getReaderContext().getEnvironment().resolvePlaceholders(expression); expression = parserContext.getReaderContext().getEnvironment().resolvePlaceholders(expression);
if ("annotation".equals(filterType)) { switch (filterType) {
case "annotation" -> {
return new AnnotationTypeFilter((Class<Annotation>) ClassUtils.forName(expression, classLoader)); return new AnnotationTypeFilter((Class<Annotation>) ClassUtils.forName(expression, classLoader));
} }
else if ("assignable".equals(filterType)) { case "assignable" -> {
return new AssignableTypeFilter(ClassUtils.forName(expression, classLoader)); return new AssignableTypeFilter(ClassUtils.forName(expression, classLoader));
} }
else if ("aspectj".equals(filterType)) { case "aspectj" -> {
return new AspectJTypeFilter(expression, classLoader); return new AspectJTypeFilter(expression, classLoader);
} }
else if ("regex".equals(filterType)) { case "regex" -> {
return new RegexPatternTypeFilter(Pattern.compile(expression)); return new RegexPatternTypeFilter(Pattern.compile(expression));
} }
else if ("custom".equals(filterType)) { case "custom" -> {
Class<?> filterClass = ClassUtils.forName(expression, classLoader); Class<?> filterClass = ClassUtils.forName(expression, classLoader);
if (!TypeFilter.class.isAssignableFrom(filterClass)) { if (!TypeFilter.class.isAssignableFrom(filterClass)) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
@ -254,8 +250,7 @@ public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser {
} }
return (TypeFilter) BeanUtils.instantiateClass(filterClass); return (TypeFilter) BeanUtils.instantiateClass(filterClass);
} }
else { default -> throw new IllegalArgumentException("Unsupported filter type: " + filterType);
throw new IllegalArgumentException("Unsupported filter type: " + filterType);
} }
} }

View File

@ -61,22 +61,13 @@ public class ExecutorBeanDefinitionParser extends AbstractSingleBeanDefinitionPa
return; return;
} }
String prefix = "java.util.concurrent.ThreadPoolExecutor."; String prefix = "java.util.concurrent.ThreadPoolExecutor.";
String policyClassName; String policyClassName = switch (rejectionPolicy) {
if (rejectionPolicy.equals("ABORT")) { case "ABORT" -> prefix + "AbortPolicy";
policyClassName = prefix + "AbortPolicy"; case "CALLER_RUNS" -> prefix + "CallerRunsPolicy";
} case "DISCARD" -> prefix + "DiscardPolicy";
else if (rejectionPolicy.equals("CALLER_RUNS")) { case "DISCARD_OLDEST" -> prefix + "DiscardOldestPolicy";
policyClassName = prefix + "CallerRunsPolicy"; default -> rejectionPolicy;
} };
else if (rejectionPolicy.equals("DISCARD")) {
policyClassName = prefix + "DiscardPolicy";
}
else if (rejectionPolicy.equals("DISCARD_OLDEST")) {
policyClassName = prefix + "DiscardOldestPolicy";
}
else {
policyClassName = rejectionPolicy;
}
builder.addPropertyValue("rejectedExecutionHandler", new RootBeanDefinition(policyClassName)); builder.addPropertyValue("rejectedExecutionHandler", new RootBeanDefinition(policyClassName));
} }

View File

@ -1778,19 +1778,13 @@ class SpelReproTests extends AbstractExpressionTests {
@Override @Override
public Object resolve(EvaluationContext context, String beanName) throws AccessException { public Object resolve(EvaluationContext context, String beanName) throws AccessException {
if (beanName.equals("foo")) { return switch (beanName) {
return "custard"; case "foo" -> "custard";
} case "foo.bar" -> "trouble";
else if (beanName.equals("foo.bar")) { case "&foo" -> "foo factory";
return "trouble"; case "goo" -> throw new AccessException("DONT ASK ME ABOUT GOO");
} default -> null;
else if (beanName.equals("&foo")) { };
return "foo factory";
}
else if (beanName.equals("goo")) {
throw new AccessException("DONT ASK ME ABOUT GOO");
}
return null;
} }
} }

View File

@ -242,19 +242,17 @@ public abstract class JdbcUtils {
// Corresponding SQL types for JSR-310 / Joda-Time types, left up // Corresponding SQL types for JSR-310 / Joda-Time types, left up
// to the caller to convert them (e.g. through a ConversionService). // to the caller to convert them (e.g. through a ConversionService).
String typeName = requiredType.getSimpleName(); String typeName = requiredType.getSimpleName();
if ("LocalDate".equals(typeName)) { return switch (typeName) {
return rs.getDate(index); case "LocalDate" -> rs.getDate(index);
} case "LocalTime" -> rs.getTime(index);
else if ("LocalTime".equals(typeName)) { case "LocalDateTime" -> rs.getTimestamp(index);
return rs.getTime(index); default ->
}
else if ("LocalDateTime".equals(typeName)) {
return rs.getTimestamp(index);
}
// Fall back to getObject without type specification, again // Fall back to getObject without type specification, again
// left up to the caller to convert the value if necessary. // left up to the caller to convert the value if necessary.
return getResultSetValue(rs, index); getResultSetValue(rs, index);
};
} }
// Perform was-null check if necessary (for results that the JDBC driver returns as primitives). // Perform was-null check if necessary (for results that the JDBC driver returns as primitives).

View File

@ -131,60 +131,26 @@ public class FacesRequestAttributes implements RequestAttributes {
@Override @Override
public Object resolveReference(String key) { public Object resolveReference(String key) {
if (REFERENCE_REQUEST.equals(key)) { return switch (key) {
return getExternalContext().getRequest(); case REFERENCE_REQUEST -> getExternalContext().getRequest();
} case REFERENCE_SESSION -> getExternalContext().getSession(true);
else if (REFERENCE_SESSION.equals(key)) { case "application" -> getExternalContext().getContext();
return getExternalContext().getSession(true); case "requestScope" -> getExternalContext().getRequestMap();
} case "sessionScope" -> getExternalContext().getSessionMap();
else if ("application".equals(key)) { case "applicationScope" -> getExternalContext().getApplicationMap();
return getExternalContext().getContext(); case "facesContext" -> getFacesContext();
} case "cookie" -> getExternalContext().getRequestCookieMap();
else if ("requestScope".equals(key)) { case "header" -> getExternalContext().getRequestHeaderMap();
return getExternalContext().getRequestMap(); case "headerValues" -> getExternalContext().getRequestHeaderValuesMap();
} case "param" -> getExternalContext().getRequestParameterMap();
else if ("sessionScope".equals(key)) { case "paramValues" -> getExternalContext().getRequestParameterValuesMap();
return getExternalContext().getSessionMap(); case "initParam" -> getExternalContext().getInitParameterMap();
} case "view" -> getFacesContext().getViewRoot();
else if ("applicationScope".equals(key)) { case "viewScope" -> getFacesContext().getViewRoot().getViewMap();
return getExternalContext().getApplicationMap(); case "flash" -> getExternalContext().getFlash();
} case "resource" -> getFacesContext().getApplication().getResourceHandler();
else if ("facesContext".equals(key)) { default -> null;
return getFacesContext(); };
}
else if ("cookie".equals(key)) {
return getExternalContext().getRequestCookieMap();
}
else if ("header".equals(key)) {
return getExternalContext().getRequestHeaderMap();
}
else if ("headerValues".equals(key)) {
return getExternalContext().getRequestHeaderValuesMap();
}
else if ("param".equals(key)) {
return getExternalContext().getRequestParameterMap();
}
else if ("paramValues".equals(key)) {
return getExternalContext().getRequestParameterValuesMap();
}
else if ("initParam".equals(key)) {
return getExternalContext().getInitParameterMap();
}
else if ("view".equals(key)) {
return getFacesContext().getViewRoot();
}
else if ("viewScope".equals(key)) {
return getFacesContext().getViewRoot().getViewMap();
}
else if ("flash".equals(key)) {
return getExternalContext().getFlash();
}
else if ("resource".equals(key)) {
return getFacesContext().getApplication().getResourceHandler();
}
else {
return null;
}
} }
@Override @Override

View File

@ -67,18 +67,12 @@ public abstract class TagUtils {
*/ */
public static int getScope(String scope) { public static int getScope(String scope) {
Assert.notNull(scope, "Scope to search for cannot be null"); Assert.notNull(scope, "Scope to search for cannot be null");
if (scope.equals(SCOPE_REQUEST)) { return switch (scope) {
return PageContext.REQUEST_SCOPE; case SCOPE_REQUEST -> PageContext.REQUEST_SCOPE;
} case SCOPE_SESSION -> PageContext.SESSION_SCOPE;
else if (scope.equals(SCOPE_SESSION)) { case SCOPE_APPLICATION -> PageContext.APPLICATION_SCOPE;
return PageContext.SESSION_SCOPE; default -> PageContext.PAGE_SCOPE;
} };
else if (scope.equals(SCOPE_APPLICATION)) {
return PageContext.APPLICATION_SCOPE;
}
else {
return PageContext.PAGE_SCOPE;
}
} }
/** /**