diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/ProblemCollector.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/ProblemCollector.java new file mode 100644 index 00000000000..f6f9d5717b7 --- /dev/null +++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/ProblemCollector.java @@ -0,0 +1,35 @@ +/* + * Copyright 2002-2011 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.beans.factory.parsing; + +/** + * TODO SPR-7420: document + * + * @author Chris Beams + * @since 3.1 + */ +public interface ProblemCollector { + + void error(String message); + + void error(String message, Throwable cause); + + void reportProblems(ProblemReporter reporter); + + boolean hasErrors(); + +} diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/SimpleProblemCollector.java b/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/SimpleProblemCollector.java index 2f90f761fae..bb0c9bb12d1 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/SimpleProblemCollector.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/factory/parsing/SimpleProblemCollector.java @@ -27,7 +27,7 @@ import org.springframework.core.io.DescriptiveResource; * @author Chris Beams * @since 3.1 */ -public class SimpleProblemCollector { +public class SimpleProblemCollector implements ProblemCollector { private Location location = null; private List errors = new ArrayList(); diff --git a/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanSpec.java b/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanSpec.java index 6a85d98b680..13b757ba95f 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanSpec.java +++ b/org.springframework.context/src/main/java/org/springframework/context/annotation/ComponentScanSpec.java @@ -23,7 +23,7 @@ import java.util.List; import java.util.regex.Pattern; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.beans.factory.support.BeanDefinitionDefaults; import org.springframework.beans.factory.support.BeanNameGenerator; import org.springframework.context.ConfigurableApplicationContext; @@ -289,7 +289,7 @@ public final class ComponentScanSpec extends AbstractFeatureSpecification { ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS)); } - public void doValidate(SimpleProblemCollector problems) { + public void doValidate(ProblemCollector problems) { if(this.basePackages.isEmpty()) { problems.error("At least one base package must be specified"); } @@ -336,7 +336,7 @@ public final class ComponentScanSpec extends AbstractFeatureSpecification { } } - private static Object instantiateUserDefinedType(String description, Class targetType, Object className, ClassLoader classLoader, SimpleProblemCollector problems) { + private static Object instantiateUserDefinedType(String description, Class targetType, Object className, ClassLoader classLoader, ProblemCollector problems) { Assert.isInstanceOf(String.class, className, "userType must be of type String"); Assert.notNull(classLoader, "classLoader must not be null"); Assert.notNull(targetType, "targetType must not be null"); @@ -406,7 +406,7 @@ public final class ComponentScanSpec extends AbstractFeatureSpecification { } @SuppressWarnings("unchecked") - TypeFilter createTypeFilter(SimpleProblemCollector problems) { + TypeFilter createTypeFilter(ProblemCollector problems) { try { if ("annotation".equalsIgnoreCase(this.filterType)) { return new AnnotationTypeFilter((Class) this.classLoader.loadClass(this.expression)); diff --git a/org.springframework.context/src/main/java/org/springframework/context/config/AbstractFeatureSpecification.java b/org.springframework.context/src/main/java/org/springframework/context/config/AbstractFeatureSpecification.java index ac0a8a80f64..e19debc8c9f 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/config/AbstractFeatureSpecification.java +++ b/org.springframework.context/src/main/java/org/springframework/context/config/AbstractFeatureSpecification.java @@ -17,6 +17,7 @@ package org.springframework.context.config; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.beans.factory.parsing.ProblemReporter; import org.springframework.beans.factory.parsing.SimpleProblemCollector; @@ -42,13 +43,13 @@ public abstract class AbstractFeatureSpecification implements SourceAwareSpecifi } public final boolean validate(ProblemReporter problemReporter) { - SimpleProblemCollector collector = new SimpleProblemCollector(this.source()); + ProblemCollector collector = new SimpleProblemCollector(this.source()); this.doValidate(collector); collector.reportProblems(problemReporter); return collector.hasErrors() ? false : true; } - protected abstract void doValidate(SimpleProblemCollector reporter); + protected abstract void doValidate(ProblemCollector problems); public AbstractFeatureSpecification source(Object source) { this.source = source; diff --git a/org.springframework.context/src/main/java/org/springframework/context/config/ExecutorContext.java b/org.springframework.context/src/main/java/org/springframework/context/config/SpecificationContext.java similarity index 100% rename from org.springframework.context/src/main/java/org/springframework/context/config/ExecutorContext.java rename to org.springframework.context/src/main/java/org/springframework/context/config/SpecificationContext.java diff --git a/org.springframework.context/src/test/java/org/springframework/context/annotation/configuration/StubSpecification.java b/org.springframework.context/src/test/java/org/springframework/context/annotation/configuration/StubSpecification.java index 94d7aef2bfd..150b6906c99 100644 --- a/org.springframework.context/src/test/java/org/springframework/context/annotation/configuration/StubSpecification.java +++ b/org.springframework.context/src/test/java/org/springframework/context/annotation/configuration/StubSpecification.java @@ -16,7 +16,7 @@ package org.springframework.context.annotation.configuration; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.ExecutorContext; import org.springframework.context.config.FeatureSpecification; @@ -33,7 +33,7 @@ public class StubSpecification extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector reporter) { + protected void doValidate(ProblemCollector problems) { } } diff --git a/org.springframework.transaction/src/main/java/org/springframework/transaction/config/TxAnnotationDriven.java b/org.springframework.transaction/src/main/java/org/springframework/transaction/config/TxAnnotationDriven.java index 299ed4854b4..29bacea94f4 100644 --- a/org.springframework.transaction/src/main/java/org/springframework/transaction/config/TxAnnotationDriven.java +++ b/org.springframework.transaction/src/main/java/org/springframework/transaction/config/TxAnnotationDriven.java @@ -16,7 +16,7 @@ package org.springframework.transaction.config; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.AdviceMode; import org.springframework.context.config.FeatureSpecificationExecutor; @@ -187,7 +187,7 @@ public final class TxAnnotationDriven extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector problems) { + protected void doValidate(ProblemCollector problems) { if (this.mode instanceof String) { if (!ObjectUtils.containsConstant(AdviceMode.values(), (String)this.mode)) { problems.error("no such mode name: " + this.mode); diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcAnnotationDriven.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcAnnotationDriven.java index d975321ea82..691c01d824d 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcAnnotationDriven.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcAnnotationDriven.java @@ -15,7 +15,7 @@ */ package org.springframework.web.servlet.config; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.beans.factory.support.ManagedList; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.FeatureSpecificationExecutor; @@ -243,7 +243,7 @@ public final class MvcAnnotationDriven extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector reporter) { + protected void doValidate(ProblemCollector problems) { } } diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcDefaultServletHandler.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcDefaultServletHandler.java index 50f96fd5148..01765173a6e 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcDefaultServletHandler.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcDefaultServletHandler.java @@ -15,7 +15,7 @@ */ package org.springframework.web.servlet.config; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.FeatureSpecificationExecutor; import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping; @@ -78,7 +78,7 @@ public class MvcDefaultServletHandler extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector reporter) { + protected void doValidate(ProblemCollector problems) { } } diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcResources.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcResources.java index 8a1ee991894..e85d12dbac1 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcResources.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcResources.java @@ -16,7 +16,7 @@ package org.springframework.web.servlet.config; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.FeatureSpecificationExecutor; import org.springframework.core.Ordered; @@ -167,7 +167,7 @@ public final class MvcResources extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector problems) { + protected void doValidate(ProblemCollector problems) { if (!StringUtils.hasText(mapping)) { problems.error("Mapping is required"); } diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcViewControllers.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcViewControllers.java index 5ef0b9ff049..6b13652e411 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcViewControllers.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/config/MvcViewControllers.java @@ -19,7 +19,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.springframework.beans.factory.parsing.SimpleProblemCollector; +import org.springframework.beans.factory.parsing.ProblemCollector; import org.springframework.context.config.AbstractFeatureSpecification; import org.springframework.context.config.FeatureSpecificationExecutor; import org.springframework.util.StringUtils; @@ -72,7 +72,7 @@ public final class MvcViewControllers extends AbstractFeatureSpecification { } @Override - protected void doValidate(SimpleProblemCollector problems) { + protected void doValidate(ProblemCollector problems) { if (mappings.size() == 0) { problems.error("At least one ViewController must be defined"); }