diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java index aff19fb49d1..688ccedc5a2 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -200,8 +200,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut pointcutParameters[i] = parser.createPointcutParameter( this.pointcutParameterNames[i], this.pointcutParameterTypes[i]); } - return parser.parsePointcutExpression( - replaceBooleanOperators(getExpression()), + return parser.parsePointcutExpression(replaceBooleanOperators(getExpression()), this.pointcutDeclarationScope, pointcutParameters); } diff --git a/spring-context/src/main/java/org/springframework/cache/Cache.java b/spring-context/src/main/java/org/springframework/cache/Cache.java index 8a9109afc92..f0710e74c48 100644 --- a/spring-context/src/main/java/org/springframework/cache/Cache.java +++ b/spring-context/src/main/java/org/springframework/cache/Cache.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -17,7 +17,7 @@ package org.springframework.cache; /** - * Interface that defines the common cache operations. + * Interface that defines common cache operations. * * Note: Due to the generic use of caching, it is recommended that * implementations allow storage of null values (for example to diff --git a/spring-context/src/main/java/org/springframework/cache/annotation/EnableCaching.java b/spring-context/src/main/java/org/springframework/cache/annotation/EnableCaching.java index 771487a56ff..ae3cbdf7fcf 100644 --- a/spring-context/src/main/java/org/springframework/cache/annotation/EnableCaching.java +++ b/spring-context/src/main/java/org/springframework/cache/annotation/EnableCaching.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -151,13 +151,12 @@ public @interface EnableCaching { * Indicate whether subclass-based (CGLIB) proxies are to be created as opposed * to standard Java interface-based proxies. The default is {@code false}. * Applicable only if {@link #mode()} is set to {@link AdviceMode#PROXY}. - * *

Note that setting this attribute to {@code true} will affect all - * Spring-managed beans requiring proxying, not just those marked with - * {@code @Cacheable}. For example, other beans marked with Spring's - * {@code @Transactional} annotation will be upgraded to subclass proxying at the same - * time. This approach has no negative impact in practice unless one is explicitly - * expecting one type of proxy vs another, e.g. in tests. + * Spring-managed beans requiring proxying, not just those marked with {@code @Cacheable}. + * For example, other beans marked with Spring's {@code @Transactional} annotation will + * be upgraded to subclass proxying at the same time. This approach has no negative + * impact in practice unless one is explicitly expecting one type of proxy vs another, + * e.g. in tests. */ boolean proxyTargetClass() default false; @@ -174,4 +173,5 @@ public @interface EnableCaching { * The default is {@link Ordered#LOWEST_PRECEDENCE}. */ int order() default Ordered.LOWEST_PRECEDENCE; + } diff --git a/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java b/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java index 105829fb9f4..22e16f6bc2b 100644 --- a/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java +++ b/spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -24,7 +24,6 @@ import groovy.lang.MetaClass; import groovy.lang.Script; import org.codehaus.groovy.control.CompilationFailedException; -import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; @@ -99,7 +98,7 @@ public class GroovyScriptFactory implements ScriptFactory, BeanFactoryAware, Bea } - public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + public void setBeanFactory(BeanFactory beanFactory) { if (beanFactory instanceof ConfigurableListableBeanFactory) { ((ConfigurableListableBeanFactory) beanFactory).ignoreDependencyType(MetaClass.class); } diff --git a/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java b/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java index a496ef705db..156e322e025 100644 --- a/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/scripting/support/ScriptFactoryPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -94,7 +94,7 @@ import org.springframework.util.StringUtils; * <property name="message" value="Hello World!"/> * </bean> * - * <bean id="groovyMessenger" class="org.springframework.scripting.bsh.GroovyScriptFactory"> + * <bean id="groovyMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory"> * <constructor-arg value="classpath:mypackage/Messenger.groovy"/> * <property name="message" value="Hello World!"/> * </bean> @@ -325,7 +325,7 @@ public class ScriptFactoryPostProcessor extends InstantiationAwareBeanPostProces if (proxyTargetClass && (language == null || !language.equals("groovy"))) { throw new BeanDefinitionValidationException( "Cannot use proxyTargetClass=true with script beans where language is not 'groovy': '" + - language + "'"); + language + "'"); } ts.setRefreshCheckDelay(refreshCheckDelay); return createRefreshableProxy(ts, interfaces, proxyTargetClass); @@ -346,17 +346,16 @@ public class ScriptFactoryPostProcessor extends InstantiationAwareBeanPostProces * @param scriptedObjectBeanName the name of the internal scripted object bean */ protected void prepareScriptBeans(BeanDefinition bd, String scriptFactoryBeanName, String scriptedObjectBeanName) { - // Avoid recreation of the script bean definition in case of a prototype. synchronized (this.scriptBeanFactory) { if (!this.scriptBeanFactory.containsBeanDefinition(scriptedObjectBeanName)) { - this.scriptBeanFactory.registerBeanDefinition(scriptFactoryBeanName, - createScriptFactoryBeanDefinition(bd)); - ScriptFactory scriptFactory = this.scriptBeanFactory - .getBean(scriptFactoryBeanName, ScriptFactory.class); - ScriptSource scriptSource = getScriptSource(scriptFactoryBeanName, - scriptFactory.getScriptSourceLocator()); + this.scriptBeanFactory.registerBeanDefinition( + scriptFactoryBeanName, createScriptFactoryBeanDefinition(bd)); + ScriptFactory scriptFactory = + this.scriptBeanFactory.getBean(scriptFactoryBeanName, ScriptFactory.class); + ScriptSource scriptSource = + getScriptSource(scriptFactoryBeanName, scriptFactory.getScriptSourceLocator()); Class[] interfaces = scriptFactory.getScriptInterfaces(); Class[] scriptedInterfaces = interfaces; @@ -365,8 +364,8 @@ public class ScriptFactoryPostProcessor extends InstantiationAwareBeanPostProces scriptedInterfaces = ObjectUtils.addObjectToArray(interfaces, configInterface); } - BeanDefinition objectBd = createScriptedObjectBeanDefinition(bd, scriptFactoryBeanName, scriptSource, - scriptedInterfaces); + BeanDefinition objectBd = createScriptedObjectBeanDefinition( + bd, scriptFactoryBeanName, scriptSource, scriptedInterfaces); long refreshCheckDelay = resolveRefreshCheckDelay(bd); if (refreshCheckDelay >= 0) { objectBd.setScope(BeanDefinition.SCOPE_PROTOTYPE); @@ -569,7 +568,7 @@ public class ScriptFactoryPostProcessor extends InstantiationAwareBeanPostProces proxyFactory.setInterfaces(interfaces); if (proxyTargetClass) { classLoader = null; // force use of Class.getClassLoader() - proxyFactory.setProxyTargetClass(proxyTargetClass); + proxyFactory.setProxyTargetClass(true); } DelegatingIntroductionInterceptor introduction = new DelegatingIntroductionInterceptor(ts); diff --git a/spring-context/src/test/java/org/springframework/beans/factory/support/InjectAnnotationAutowireContextTests.java b/spring-context/src/test/java/org/springframework/beans/factory/support/InjectAnnotationAutowireContextTests.java index 3544595d9dc..fcceb3fb3b7 100644 --- a/spring-context/src/test/java/org/springframework/beans/factory/support/InjectAnnotationAutowireContextTests.java +++ b/spring-context/src/test/java/org/springframework/beans/factory/support/InjectAnnotationAutowireContextTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -24,7 +24,6 @@ import javax.inject.Inject; import javax.inject.Named; import javax.inject.Qualifier; -import static org.junit.Assert.*; import org.junit.Test; import org.springframework.aop.scope.ScopedProxyUtils; @@ -36,6 +35,8 @@ import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.context.annotation.AnnotationConfigUtils; import org.springframework.context.support.GenericApplicationContext; +import static org.junit.Assert.*; + /** * Integration tests for handling JSR-303 {@link javax.inject.Qualifier} annotations. * @@ -666,27 +667,27 @@ public class InjectAnnotationAutowireContextTests { @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Qualifier - public static @interface TestQualifier { + public @interface TestQualifier { } @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Qualifier - public static @interface TestQualifierWithDefaultValue { + public @interface TestQualifierWithDefaultValue { - public abstract String value() default "default"; + String value() default "default"; } @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Qualifier - public static @interface TestQualifierWithMultipleAttributes { + public @interface TestQualifierWithMultipleAttributes { - public abstract String value() default "default"; + String value() default "default"; - public abstract int number(); + int number(); } } diff --git a/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java b/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java index 22a41a0ee9f..f1757f83905 100644 --- a/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java @@ -91,7 +91,8 @@ public abstract class ReflectionUtils { while (!Object.class.equals(searchType) && searchType != null) { Field[] fields = searchType.getDeclaredFields(); for (Field field : fields) { - if ((name == null || name.equals(field.getName())) && (type == null || type.equals(field.getType()))) { + if ((name == null || name.equals(field.getName())) && + (type == null || type.equals(field.getType()))) { return field; } } @@ -424,7 +425,8 @@ public abstract class ReflectionUtils { * @see java.lang.reflect.Field#setAccessible */ public static void makeAccessible(Field field) { - if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers()) || + if ((!Modifier.isPublic(field.getModifiers()) || + !Modifier.isPublic(field.getDeclaringClass().getModifiers()) || Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) { field.setAccessible(true); } diff --git a/spring-core/src/test/java/org/springframework/core/GenericTypeResolverTests.java b/spring-core/src/test/java/org/springframework/core/GenericTypeResolverTests.java index ca335500027..5495b993d09 100644 --- a/spring-core/src/test/java/org/springframework/core/GenericTypeResolverTests.java +++ b/spring-core/src/test/java/org/springframework/core/GenericTypeResolverTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -165,11 +165,11 @@ public class GenericTypeResolverTests { public void getGenericsOnArrayFromReturnCannotBeResolved() throws Exception { // SPR-11044 Class resolved = GenericTypeResolver.resolveReturnType( - WithArrayBase.class.getDeclaredMethod("array", Object[].class), - WithArray.class); + WithArrayBase.class.getDeclaredMethod("array", Object[].class), WithArray.class); assertThat(resolved, equalTo((Class) Object[].class)); } + public interface MyInterfaceType { } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java index 33087c446c3..9a2d7099565 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -20,7 +20,6 @@ import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.Arrays; import java.util.List; - import javax.sql.DataSource; import org.apache.commons.logging.Log; @@ -32,16 +31,14 @@ import org.springframework.jdbc.support.JdbcUtils; import org.springframework.jdbc.support.MetaDataAccessException; /** - * Factory used to create a {@link CallMetaDataProvider} implementation based on the type of databse being used. + * Factory used to create a {@link CallMetaDataProvider} implementation + * based on the type of database being used. * * @author Thomas Risberg * @since 2.5 */ public class CallMetaDataProviderFactory { - /** Logger */ - private static final Log logger = LogFactory.getLog(CallMetaDataProviderFactory.class); - /** List of supported database products for procedure calls */ public static final List supportedDatabaseProductsForProcedures = Arrays.asList( "Apache Derby", @@ -52,6 +49,7 @@ public class CallMetaDataProviderFactory { "PostgreSQL", "Sybase" ); + /** List of supported database products for function calls */ public static final List supportedDatabaseProductsForFunctions = Arrays.asList( "MySQL", @@ -60,10 +58,13 @@ public class CallMetaDataProviderFactory { "PostgreSQL" ); + private static final Log logger = LogFactory.getLog(CallMetaDataProviderFactory.class); + + /** - * Create a CallMetaDataProvider based on the database metedata - * @param dataSource used to retrieve metedata - * @param context the class that holds configuration and metedata + * Create a CallMetaDataProvider based on the database metadata + * @param dataSource used to retrieve metadata + * @param context the class that holds configuration and metadata * @return instance of the CallMetaDataProvider implementation to be used */ static public CallMetaDataProvider createMetaDataProvider(DataSource dataSource, final CallMetaDataContext context) { @@ -124,17 +125,16 @@ public class CallMetaDataProviderFactory { } provider.initializeWithMetaData(databaseMetaData); if (accessProcedureColumnMetaData) { - provider.initializeWithProcedureColumnMetaData( - databaseMetaData, context.getCatalogName(), context.getSchemaName(), context.getProcedureName()); + provider.initializeWithProcedureColumnMetaData(databaseMetaData, + context.getCatalogName(), context.getSchemaName(), context.getProcedureName()); } return provider; } }); } catch (MetaDataAccessException ex) { - throw new DataAccessResourceFailureException("Error retreiving database metadata", ex); + throw new DataAccessResourceFailureException("Error retrieving database metadata", ex); } - } } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java index fcf2c6fefd4..6adcabc97ab 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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,7 +70,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { Arrays.asList("Apache Derby", "HSQL Database Engine"); /** Collection of TableParameterMetaData objects */ - private List insertParameterMetaData = new ArrayList(); + private List tableParameterMetaData = new ArrayList(); /** NativeJdbcExtractor that can be used to retrieve the native connection */ private NativeJdbcExtractor nativeJdbcExtractor; @@ -107,7 +107,7 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } public List getTableParameterMetaData() { - return this.insertParameterMetaData; + return this.tableParameterMetaData; } public boolean isGetGeneratedKeysSupported() { @@ -362,17 +362,14 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } try { tableColumns = databaseMetaData.getColumns( - metaDataCatalogName, - metaDataSchemaName, - metaDataTableName, - null); + metaDataCatalogName, metaDataSchemaName, metaDataTableName, null); while (tableColumns.next()) { String columnName = tableColumns.getString("COLUMN_NAME"); int dataType = tableColumns.getInt("DATA_TYPE"); if (dataType == Types.DECIMAL) { String typeName = tableColumns.getString("TYPE_NAME"); int decimalDigits = tableColumns.getInt("DECIMAL_DIGITS"); - // override a DECIMAL data type for no-decimal numerics + // Override a DECIMAL data type for no-decimal numerics // (this is for better Oracle support where there have been issues // using DECIMAL for certain inserts (see SPR-6912)) if ("NUMBER".equals(typeName) && decimalDigits == 0) { @@ -386,18 +383,11 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { } } boolean nullable = tableColumns.getBoolean("NULLABLE"); - TableParameterMetaData meta = new TableParameterMetaData( - columnName, - dataType, - nullable - ); - this.insertParameterMetaData.add(meta); + TableParameterMetaData meta = new TableParameterMetaData(columnName, dataType, nullable); + this.tableParameterMetaData.add(meta); if (logger.isDebugEnabled()) { - logger.debug("Retrieved metadata: " - + meta.getParameterName() + - " " + meta.getSqlType() + - " " + meta.isNullable() - ); + logger.debug("Retrieved metadata: " + meta.getParameterName() + + " " + meta.getSqlType() + " " + meta.isNullable()); } } } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java index f3391db2394..c9bb919c3cb 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -201,7 +201,8 @@ public class TableMetaDataContext { * @param generatedKeyNames name of generated keys */ public void processMetaData(DataSource dataSource, List declaredColumns, String[] generatedKeyNames) { - this.metaDataProvider = TableMetaDataProviderFactory.createMetaDataProvider(dataSource, this, this.nativeJdbcExtractor); + this.metaDataProvider = + TableMetaDataProviderFactory.createMetaDataProvider(dataSource, this, this.nativeJdbcExtractor); this.tableColumns = reconcileColumnsToUse(declaredColumns, generatedKeyNames); } @@ -298,14 +299,14 @@ public class TableMetaDataContext { } StringBuilder insertStatement = new StringBuilder(); insertStatement.append("INSERT INTO "); - if (this.getSchemaName() != null) { - insertStatement.append(this.getSchemaName()); + if (getSchemaName() != null) { + insertStatement.append(getSchemaName()); insertStatement.append("."); } - insertStatement.append(this.getTableName()); + insertStatement.append(getTableName()); insertStatement.append(" ("); int columnCount = 0; - for (String columnName : this.getTableColumns()) { + for (String columnName : getTableColumns()) { if (!keys.contains(columnName.toUpperCase())) { columnCount++; if (columnCount > 1) { @@ -318,11 +319,11 @@ public class TableMetaDataContext { if (columnCount < 1) { if (this.generatedKeyColumnsUsed) { logger.info("Unable to locate non-key columns for table '" + - this.getTableName() + "' so an empty insert statement is generated"); + getTableName() + "' so an empty insert statement is generated"); } else { throw new InvalidDataAccessApiUsageException("Unable to locate columns for table '" + - this.getTableName() + "' so an insert statement can't be generated"); + getTableName() + "' so an insert statement can't be generated"); } } for (int i = 0; i < columnCount; i++) { @@ -340,14 +341,14 @@ public class TableMetaDataContext { * @return the array of types to be used */ public int[] createInsertTypes() { - int[] types = new int[this.getTableColumns().size()]; + int[] types = new int[getTableColumns().size()]; List parameters = this.metaDataProvider.getTableParameterMetaData(); Map parameterMap = new HashMap(parameters.size()); for (TableParameterMetaData tpmd : parameters) { parameterMap.put(tpmd.getParameterName().toUpperCase(), tpmd); } int typeIndx = 0; - for (String column : this.getTableColumns()) { + for (String column : getTableColumns()) { if (column == null) { types[typeIndx] = SqlTypeValue.TYPE_UNKNOWN; } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java index 15421a998a2..1054bc672cf 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2015 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. @@ -30,7 +30,8 @@ import org.springframework.jdbc.support.MetaDataAccessException; import org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor; /** - * Factory used to create a {@link TableMetaDataProvider} implementation based on the type of databse being used. + * Factory used to create a {@link TableMetaDataProvider} implementation + * based on the type of database being used. * * @author Thomas Risberg * @since 2.5 diff --git a/spring-web/src/main/java/org/springframework/web/multipart/MaxUploadSizeExceededException.java b/spring-web/src/main/java/org/springframework/web/multipart/MaxUploadSizeExceededException.java index 36eb573b57e..fce24534467 100644 --- a/spring-web/src/main/java/org/springframework/web/multipart/MaxUploadSizeExceededException.java +++ b/spring-web/src/main/java/org/springframework/web/multipart/MaxUploadSizeExceededException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -52,7 +52,7 @@ public class MaxUploadSizeExceededException extends MultipartException { * Return the maximum upload size allowed. */ public long getMaxUploadSize() { - return maxUploadSize; + return this.maxUploadSize; } } diff --git a/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java b/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java index b3e347fd5fb..6ec3f5b580e 100644 --- a/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java +++ b/spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -21,20 +21,21 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; import org.junit.Test; -import org.springframework.tests.sample.beans.ITestBean; import org.springframework.beans.PropertyValue; import org.springframework.beans.PropertyValues; -import org.springframework.tests.sample.beans.TestBean; import org.springframework.mock.web.test.MockHttpServletRequest; import org.springframework.mock.web.test.MockMultipartFile; import org.springframework.mock.web.test.MockMultipartHttpServletRequest; +import org.springframework.tests.sample.beans.ITestBean; +import org.springframework.tests.sample.beans.TestBean; import org.springframework.web.bind.ServletRequestParameterPropertyValues; import org.springframework.web.context.request.ServletWebRequest; import org.springframework.web.multipart.support.StringMultipartFileEditor; +import static org.junit.Assert.*; + /** * @author Juergen Hoeller */ @@ -146,6 +147,28 @@ public class WebRequestDataBinderTests { assertFalse(target.isPostProcessed()); } + @Test + public void testFieldDefaultWithNestedProperty() throws Exception { + TestBean target = new TestBean(); + target.setSpouse(new TestBean()); + WebRequestDataBinder binder = new WebRequestDataBinder(target); + + MockHttpServletRequest request = new MockHttpServletRequest(); + request.addParameter("!spouse.postProcessed", "on"); + request.addParameter("_spouse.postProcessed", "visible"); + request.addParameter("spouse.postProcessed", "on"); + binder.bind(new ServletWebRequest(request)); + assertTrue(((TestBean) target.getSpouse()).isPostProcessed()); + + request.removeParameter("spouse.postProcessed"); + binder.bind(new ServletWebRequest(request)); + assertTrue(((TestBean) target.getSpouse()).isPostProcessed()); + + request.removeParameter("!spouse.postProcessed"); + binder.bind(new ServletWebRequest(request)); + assertFalse(((TestBean) target.getSpouse()).isPostProcessed()); + } + @Test public void testFieldDefaultNonBoolean() throws Exception { TestBean target = new TestBean();