Polishing
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -53,8 +53,9 @@ public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
|
||||
* will be short-circuited. The only further processing applied is the
|
||||
* {@link #postProcessAfterInitialization} callback from the configured
|
||||
* {@link BeanPostProcessor BeanPostProcessors}.
|
||||
* <p>This callback will only be applied to bean definitions with a bean class.
|
||||
* In particular, it will not be applied to beans with a "factory-method".
|
||||
* <p>This callback will be applied to bean definitions with their bean class,
|
||||
* as well as to factory-method definitions in which case the returned bean type
|
||||
* will be passed in here.
|
||||
* <p>Post-processors may implement the extended
|
||||
* {@link SmartInstantiationAwareBeanPostProcessor} interface in order
|
||||
* to predict the type of the bean object that they are going to return here.
|
||||
@@ -63,8 +64,9 @@ public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
|
||||
* @return the bean object to expose instead of a default instance of the target bean,
|
||||
* or {@code null} to proceed with default instantiation
|
||||
* @throws org.springframework.beans.BeansException in case of errors
|
||||
* @see org.springframework.beans.factory.support.AbstractBeanDefinition#hasBeanClass
|
||||
* @see org.springframework.beans.factory.support.AbstractBeanDefinition#getFactoryMethodName
|
||||
* @see #postProcessAfterInstantiation
|
||||
* @see org.springframework.beans.factory.support.AbstractBeanDefinition#getBeanClass()
|
||||
* @see org.springframework.beans.factory.support.AbstractBeanDefinition#getFactoryMethodName()
|
||||
*/
|
||||
Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException;
|
||||
|
||||
@@ -80,6 +82,7 @@ public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
|
||||
* Returning {@code false} will also prevent any subsequent InstantiationAwareBeanPostProcessor
|
||||
* instances being invoked on this bean instance.
|
||||
* @throws org.springframework.beans.BeansException in case of errors
|
||||
* @see #postProcessBeforeInstantiation
|
||||
*/
|
||||
boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException;
|
||||
|
||||
@@ -95,9 +98,8 @@ public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
|
||||
* dependency types - which the factory handles specifically - already filtered out)
|
||||
* @param bean the bean instance created, but whose properties have not yet been set
|
||||
* @param beanName the name of the bean
|
||||
* @return the actual property values to apply to the given bean
|
||||
* (can be the passed-in PropertyValues instance), or {@code null}
|
||||
* to skip property population
|
||||
* @return the actual property values to apply to the given bean (can be the passed-in
|
||||
* PropertyValues instance), or {@code null} to skip property population
|
||||
* @throws org.springframework.beans.BeansException in case of errors
|
||||
* @see org.springframework.beans.MutablePropertyValues
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -83,10 +83,12 @@ public abstract class AbstractTypeHierarchyTraversingFilter implements TypeFilte
|
||||
}
|
||||
}
|
||||
catch (IOException ex) {
|
||||
logger.debug("Could not read super class [" + metadata.getSuperClassName() +
|
||||
"] of type-filtered class [" + metadata.getClassName() + "]");
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Could not read super class [" + metadata.getSuperClassName() +
|
||||
"] of type-filtered class [" + metadata.getClassName() + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,8 +109,10 @@ public abstract class AbstractTypeHierarchyTraversingFilter implements TypeFilte
|
||||
}
|
||||
}
|
||||
catch (IOException ex) {
|
||||
logger.debug("Could not read interface [" + ifc + "] for type-filtered class [" +
|
||||
metadata.getClassName() + "]");
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Could not read interface [" + ifc + "] for type-filtered class [" +
|
||||
metadata.getClassName() + "]");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -70,14 +70,16 @@ public class CustomSQLExceptionTranslatorRegistry {
|
||||
* @param translator the custom translator
|
||||
*/
|
||||
public void registerTranslator(String dbName, SQLExceptionTranslator translator) {
|
||||
SQLExceptionTranslator replaced = translatorMap.put(dbName, translator);
|
||||
if (replaced != null) {
|
||||
logger.warn("Replacing custom translator [" + replaced + "] for database '" + dbName +
|
||||
"' with [" + translator + "]");
|
||||
}
|
||||
else {
|
||||
logger.info("Adding custom translator of type [" + translator.getClass().getName() +
|
||||
"] for database '" + dbName + "'");
|
||||
SQLExceptionTranslator replaced = this.translatorMap.put(dbName, translator);
|
||||
if (logger.isInfoEnabled()) {
|
||||
if (replaced != null) {
|
||||
logger.info("Replacing custom translator [" + replaced + "] for database '" + dbName +
|
||||
"' with [" + translator + "]");
|
||||
}
|
||||
else {
|
||||
logger.info("Adding custom translator of type [" + translator.getClass().getName() +
|
||||
"] for database '" + dbName + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -85,7 +85,9 @@ public class DefaultJmsActivationSpecFactory extends StandardJmsActivationSpecFa
|
||||
return adapter.getClass().getClassLoader().loadClass(specClassName);
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
logger.debug("No default <Provider>ActivationSpec class found: " + specClassName);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("No default <Provider>ActivationSpec class found: " + specClassName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +100,9 @@ public class DefaultJmsActivationSpecFactory extends StandardJmsActivationSpecFa
|
||||
return adapter.getClass().getClassLoader().loadClass(specClassName);
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
logger.debug("No default <Provider>ActivationSpecImpl class found: " + specClassName);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("No default <Provider>ActivationSpecImpl class found: " + specClassName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +113,9 @@ public class DefaultJmsActivationSpecFactory extends StandardJmsActivationSpecFa
|
||||
return adapter.getClass().getClassLoader().loadClass(specClassName);
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
logger.debug("No default ActivationSpecImpl class found in provider package: " + specClassName);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("No default ActivationSpecImpl class found in provider package: " + specClassName);
|
||||
}
|
||||
}
|
||||
|
||||
// ActivationSpecImpl class in "inbound" subpackage (WebSphere MQ 6.0.2.1)
|
||||
@@ -118,7 +124,9 @@ public class DefaultJmsActivationSpecFactory extends StandardJmsActivationSpecFa
|
||||
return adapter.getClass().getClassLoader().loadClass(specClassName);
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
logger.debug("No default ActivationSpecImpl class found in inbound subpackage: " + specClassName);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("No default ActivationSpecImpl class found in inbound subpackage: " + specClassName);
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalStateException("No ActivationSpec class defined - " +
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -39,7 +39,6 @@ package org.springframework.transaction;
|
||||
* @since 16.05.2003
|
||||
* @see org.springframework.transaction.support.TransactionTemplate
|
||||
* @see org.springframework.transaction.interceptor.TransactionInterceptor
|
||||
* @see org.springframework.transaction.interceptor.TransactionProxyFactoryBean
|
||||
*/
|
||||
public interface PlatformTransactionManager {
|
||||
|
||||
@@ -54,7 +53,7 @@ public interface PlatformTransactionManager {
|
||||
* <p>An exception to the above rule is the read-only flag, which should be
|
||||
* ignored if no explicit read-only mode is supported. Essentially, the
|
||||
* read-only flag is just a hint for potential optimization.
|
||||
* @param definition TransactionDefinition instance (can be {@code null} for defaults),
|
||||
* @param definition the TransactionDefinition instance (can be {@code null} for defaults),
|
||||
* describing propagation behavior, isolation level, timeout etc.
|
||||
* @return transaction status object representing the new or current transaction
|
||||
* @throws TransactionException in case of lookup, creation, or system errors
|
||||
|
||||
@@ -87,11 +87,11 @@ public enum Propagation {
|
||||
|
||||
/**
|
||||
* Execute within a nested transaction if a current transaction exists,
|
||||
* behave like {@code REQUIRED} else. There is no analogous feature in EJB.
|
||||
* behave like {@code REQUIRED} otherwise. There is no analogous feature in EJB.
|
||||
* <p>Note: Actual creation of a nested transaction will only work on specific
|
||||
* transaction managers. Out of the box, this only applies to the JDBC
|
||||
* DataSourceTransactionManager when working on a JDBC 3.0 driver.
|
||||
* Some JTA providers might support nested transactions as well.
|
||||
* DataSourceTransactionManager. Some JTA providers might support nested
|
||||
* transactions as well.
|
||||
* @see org.springframework.jdbc.datasource.DataSourceTransactionManager
|
||||
*/
|
||||
NESTED(TransactionDefinition.PROPAGATION_NESTED);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -100,7 +100,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init
|
||||
* <p>To find out about specific transaction characteristics, consider using
|
||||
* TransactionSynchronizationManager's {@code isSynchronizationActive()}
|
||||
* and/or {@code isActualTransactionActive()} methods.
|
||||
* @return TransactionInfo bound to this thread, or {@code null} if none
|
||||
* @return the TransactionInfo bound to this thread, or {@code null} if none
|
||||
* @see TransactionInfo#hasTransaction()
|
||||
* @see org.springframework.transaction.support.TransactionSynchronizationManager#isSynchronizationActive()
|
||||
* @see org.springframework.transaction.support.TransactionSynchronizationManager#isActualTransactionActive()
|
||||
@@ -275,7 +275,8 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init
|
||||
if (txAttr == null || !(tm instanceof CallbackPreferringPlatformTransactionManager)) {
|
||||
// Standard transaction demarcation with getTransaction and commit/rollback calls.
|
||||
TransactionInfo txInfo = createTransactionIfNecessary(tm, txAttr, joinpointIdentification);
|
||||
Object retVal = null;
|
||||
|
||||
Object retVal;
|
||||
try {
|
||||
// This is an around advice: Invoke the next interceptor in the chain.
|
||||
// This will normally result in a target object being invoked.
|
||||
@@ -369,6 +370,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init
|
||||
if (txAttr == null || this.beanFactory == null) {
|
||||
return getTransactionManager();
|
||||
}
|
||||
|
||||
String qualifier = txAttr.getQualifier();
|
||||
if (StringUtils.hasText(qualifier)) {
|
||||
return determineQualifiedTransactionManager(qualifier);
|
||||
@@ -493,9 +495,10 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init
|
||||
else {
|
||||
// The TransactionInfo.hasTransaction() method will return false. We created it only
|
||||
// to preserve the integrity of the ThreadLocal stack maintained in this class.
|
||||
if (logger.isTraceEnabled())
|
||||
logger.trace("Don't need to create transaction for [" + joinpointIdentification +
|
||||
"]: This method isn't transactional.");
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace("No need to create transaction for [" + joinpointIdentification +
|
||||
"]: This method is not transactional.");
|
||||
}
|
||||
}
|
||||
|
||||
// We always bind the TransactionInfo to the thread, even if we didn't create
|
||||
@@ -585,7 +588,7 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init
|
||||
|
||||
|
||||
/**
|
||||
* Opaque object used to hold Transaction information. Subclasses
|
||||
* Opaque object used to hold transaction information. Subclasses
|
||||
* must pass it back to methods on this class, but not see its internals.
|
||||
*/
|
||||
protected final class TransactionInfo {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -560,7 +560,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
|
||||
if (definition.getTimeout() != TransactionDefinition.TIMEOUT_DEFAULT) {
|
||||
return definition.getTimeout();
|
||||
}
|
||||
return this.defaultTimeout;
|
||||
return getDefaultTimeout();
|
||||
}
|
||||
|
||||
|
||||
@@ -682,7 +682,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
|
||||
/**
|
||||
* Reactivate transaction synchronization for the current thread
|
||||
* and resume all given synchronizations.
|
||||
* @param suspendedSynchronizations List of TransactionSynchronization objects
|
||||
* @param suspendedSynchronizations a List of TransactionSynchronization objects
|
||||
*/
|
||||
private void doResumeSynchronization(List<TransactionSynchronization> suspendedSynchronizations) {
|
||||
TransactionSynchronizationManager.initSynchronization();
|
||||
@@ -994,7 +994,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
|
||||
* given Spring TransactionSynchronization objects.
|
||||
* <p>To be called by this abstract manager itself, or by special implementations
|
||||
* of the {@code registerAfterCompletionWithExistingTransaction} callback.
|
||||
* @param synchronizations List of TransactionSynchronization objects
|
||||
* @param synchronizations a List of TransactionSynchronization objects
|
||||
* @param completionStatus the completion status according to the
|
||||
* constants in the TransactionSynchronization interface
|
||||
* @see #registerAfterCompletionWithExistingTransaction(Object, java.util.List)
|
||||
@@ -1244,7 +1244,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
|
||||
* immediately, passing in "STATUS_UNKNOWN". This is the best we can do if there's no
|
||||
* chance to determine the actual outcome of the outer transaction.
|
||||
* @param transaction transaction object returned by {@code doGetTransaction}
|
||||
* @param synchronizations List of TransactionSynchronization objects
|
||||
* @param synchronizations a List of TransactionSynchronization objects
|
||||
* @throws TransactionException in case of system errors
|
||||
* @see #invokeAfterCompletion(java.util.List, int)
|
||||
* @see TransactionSynchronization#afterCompletion(int)
|
||||
@@ -1307,6 +1307,7 @@ public abstract class AbstractPlatformTransactionManager implements PlatformTran
|
||||
private SuspendedResourcesHolder(
|
||||
Object suspendedResources, List<TransactionSynchronization> suspendedSynchronizations,
|
||||
String name, boolean readOnly, Integer isolationLevel, boolean wasActive) {
|
||||
|
||||
this.suspendedResources = suspendedResources;
|
||||
this.suspendedSynchronizations = suspendedSynchronizations;
|
||||
this.name = name;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -287,10 +287,11 @@ public abstract class TransactionSynchronizationManager {
|
||||
throws IllegalStateException {
|
||||
|
||||
Assert.notNull(synchronization, "TransactionSynchronization must not be null");
|
||||
if (!isSynchronizationActive()) {
|
||||
Set<TransactionSynchronization> synchs = synchronizations.get();
|
||||
if (synchs == null) {
|
||||
throw new IllegalStateException("Transaction synchronization is not active");
|
||||
}
|
||||
synchronizations.get().add(synchronization);
|
||||
synchs.add(synchronization);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -80,7 +80,9 @@ public abstract class AbstractWebArgumentResolverAdapter implements HandlerMetho
|
||||
}
|
||||
catch (Exception ex) {
|
||||
// ignore (see class-level doc)
|
||||
logger.debug("Error in checking support for parameter [" + parameter + "], message: " + ex.getMessage());
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Error in checking support for parameter [" + parameter + "]: " + ex.getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -99,7 +99,6 @@ public abstract class AbstractHandlerExceptionResolver implements HandlerExcepti
|
||||
* <p>Default is no warn logging. Specify this setting to activate warn logging into a specific
|
||||
* category. Alternatively, override the {@link #logException} method for custom logging.
|
||||
* @see org.apache.commons.logging.LogFactory#getLog(String)
|
||||
* @see org.apache.log4j.Logger#getLogger(String)
|
||||
* @see java.util.logging.Logger#getLogger(String)
|
||||
*/
|
||||
public void setWarnLogCategory(String loggerName) {
|
||||
@@ -131,11 +130,11 @@ public abstract class AbstractHandlerExceptionResolver implements HandlerExcepti
|
||||
prepareResponse(ex, response);
|
||||
ModelAndView result = doResolveException(request, response, handler, ex);
|
||||
if (result != null) {
|
||||
// Print warn message when warn logger is not enabled...
|
||||
// Print debug message when warn logger is not enabled.
|
||||
if (logger.isDebugEnabled() && (this.warnLogger == null || !this.warnLogger.isWarnEnabled())) {
|
||||
logger.debug("Resolved [" + ex + "]" + (result.isEmpty() ? "" : " to " + result));
|
||||
}
|
||||
// warnLogger with full stack trace (requires explicit config)
|
||||
// Explicitly configured warn logger in logException method.
|
||||
logException(ex, request);
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -55,7 +55,7 @@ import org.springframework.web.util.WebUtils;
|
||||
public class CookieLocaleResolver extends CookieGenerator implements LocaleContextResolver {
|
||||
|
||||
/**
|
||||
* The name of the request attribute that holds the Locale.
|
||||
* The name of the request attribute that holds the {@code Locale}.
|
||||
* <p>Only used for overriding a cookie value if the locale has been
|
||||
* changed in the course of the current request!
|
||||
* <p>Use {@code RequestContext(Utils).getLocale()}
|
||||
@@ -66,7 +66,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
public static final String LOCALE_REQUEST_ATTRIBUTE_NAME = CookieLocaleResolver.class.getName() + ".LOCALE";
|
||||
|
||||
/**
|
||||
* The name of the request attribute that holds the TimeZone.
|
||||
* The name of the request attribute that holds the {@code TimeZone}.
|
||||
* <p>Only used for overriding a cookie value if the locale has been
|
||||
* changed in the course of the current request!
|
||||
* <p>Use {@code RequestContext(Utils).getTimeZone()}
|
||||
@@ -122,14 +122,14 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a fixed Locale that this resolver will return if no cookie found.
|
||||
* Set a fixed locale that this resolver will return if no cookie found.
|
||||
*/
|
||||
public void setDefaultLocale(Locale defaultLocale) {
|
||||
this.defaultLocale = defaultLocale;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the fixed Locale that this resolver will return if no cookie found,
|
||||
* Return the fixed locale that this resolver will return if no cookie found,
|
||||
* if any.
|
||||
*/
|
||||
protected Locale getDefaultLocale() {
|
||||
@@ -137,7 +137,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a fixed TimeZone that this resolver will return if no cookie found.
|
||||
* Set a fixed time zone that this resolver will return if no cookie found.
|
||||
* @since 4.0
|
||||
*/
|
||||
public void setDefaultTimeZone(TimeZone defaultTimeZone) {
|
||||
@@ -145,7 +145,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the fixed TimeZone that this resolver will return if no cookie found,
|
||||
* Return the fixed time zone that this resolver will return if no cookie found,
|
||||
* if any.
|
||||
* @since 4.0
|
||||
*/
|
||||
@@ -177,10 +177,11 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
|
||||
private void parseLocaleCookieIfNecessary(HttpServletRequest request) {
|
||||
if (request.getAttribute(LOCALE_REQUEST_ATTRIBUTE_NAME) == null) {
|
||||
// Retrieve and parse cookie value.
|
||||
Cookie cookie = WebUtils.getCookie(request, getCookieName());
|
||||
Locale locale = null;
|
||||
TimeZone timeZone = null;
|
||||
|
||||
// Retrieve and parse cookie value.
|
||||
Cookie cookie = WebUtils.getCookie(request, getCookieName());
|
||||
if (cookie != null) {
|
||||
String value = cookie.getValue();
|
||||
String localePart = value;
|
||||
@@ -214,6 +215,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
"'" + (timeZone != null ? " and time zone '" + timeZone.getID() + "'" : ""));
|
||||
}
|
||||
}
|
||||
|
||||
request.setAttribute(LOCALE_REQUEST_ATTRIBUTE_NAME,
|
||||
(locale != null ? locale : determineDefaultLocale(request)));
|
||||
request.setAttribute(TIME_ZONE_REQUEST_ATTRIBUTE_NAME,
|
||||
@@ -296,7 +298,7 @@ public class CookieLocaleResolver extends CookieGenerator implements LocaleConte
|
||||
|
||||
/**
|
||||
* Determine the default time zone for the given request,
|
||||
* Called if no TimeZone cookie has been found.
|
||||
* Called if no time zone cookie has been found.
|
||||
* <p>The default implementation returns the specified default time zone,
|
||||
* if any, or {@code null} otherwise.
|
||||
* @param request the request to resolve the time zone for
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -149,7 +149,9 @@ public class LocaleChangeInterceptor extends HandlerInterceptorAdapter {
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
if (isIgnoreInvalidLocale()) {
|
||||
logger.debug("Ignoring invalid locale value [" + newLocale + "]: " + ex.getMessage());
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Ignoring invalid locale value [" + newLocale + "]: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw ex;
|
||||
|
||||
Reference in New Issue
Block a user