类org.springframework.beans.factory.parsing.BeanDefinitionParsingException源码实例Demo

下面列出了怎么用org.springframework.beans.factory.parsing.BeanDefinitionParsingException的API类实例代码及写法,或者点击链接到github查看源代码。

@Test
public void configurationClassesMayNotBeFinal() {
	@Configuration
	final class Config { }

	BeanDefinition configBeanDef = rootBeanDefinition(Config.class).getBeanDefinition();
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", configBeanDef);

	try {
		ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
		pp.postProcessBeanFactory(beanFactory);
		fail("expected exception");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue(ex.getMessage(), ex.getMessage().contains("Remove the final modifier"));
	}
}
 
/**
 * Define a Spring XML namespace definition to use.
 * @param definition the namespace definition
 */
public void xmlns(Map<String, String> definition) {
	if (!definition.isEmpty()) {
		for (Map.Entry<String,String> entry : definition.entrySet()) {
			String namespace = entry.getKey();
			String uri = entry.getValue();
			if (uri == null) {
				throw new IllegalArgumentException("Namespace definition must supply a non-null URI");
			}
			NamespaceHandler namespaceHandler =
					this.groovyDslXmlBeanDefinitionReader.getNamespaceHandlerResolver().resolve(uri);
			if (namespaceHandler == null) {
				throw new BeanDefinitionParsingException(new Problem("No namespace handler found for URI: " + uri,
						new Location(new DescriptiveResource(("Groovy")))));
			}
			this.namespaces.put(namespace, uri);
		}
	}
}
 
@Test
public void configurationClassesMayNotBeFinal() {
	@Configuration
	final class Config { }

	BeanDefinition configBeanDef = rootBeanDefinition(Config.class).getBeanDefinition();
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", configBeanDef);

	try {
		ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
		pp.postProcessBeanFactory(beanFactory);
		fail("expected exception");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue(ex.getMessage(), ex.getMessage().contains("Remove the final modifier"));
	}
}
 
/**
 * Define a Spring XML namespace definition to use.
 * @param definition the namespace definition
 */
public void xmlns(Map<String, String> definition) {
	if (!definition.isEmpty()) {
		for (Map.Entry<String,String> entry : definition.entrySet()) {
			String namespace = entry.getKey();
			String uri = entry.getValue();
			if (uri == null) {
				throw new IllegalArgumentException("Namespace definition must supply a non-null URI");
			}
			NamespaceHandler namespaceHandler =
					this.groovyDslXmlBeanDefinitionReader.getNamespaceHandlerResolver().resolve(uri);
			if (namespaceHandler == null) {
				throw new BeanDefinitionParsingException(new Problem("No namespace handler found for URI: " + uri,
						new Location(new DescriptiveResource(("Groovy")))));
			}
			this.namespaces.put(namespace, uri);
		}
	}
}
 
源代码5 项目: lams   文件: GroovyBeanDefinitionReader.java
/**
 * Define a Spring XML namespace definition to use.
 * @param definition the namespace definition
 */
public void xmlns(Map<String, String> definition) {
	if (!definition.isEmpty()) {
		for (Map.Entry<String,String> entry : definition.entrySet()) {
			String namespace = entry.getKey();
			String uri = entry.getValue();
			if (uri == null) {
				throw new IllegalArgumentException("Namespace definition must supply a non-null URI");
			}
			NamespaceHandler namespaceHandler =
					this.groovyDslXmlBeanDefinitionReader.getNamespaceHandlerResolver().resolve(uri);
			if (namespaceHandler == null) {
				throw new BeanDefinitionParsingException(new Problem("No namespace handler found for URI: " + uri,
						new Location(new DescriptiveResource(("Groovy")))));
			}
			this.namespaces.put(namespace, uri);
		}
	}
}
 
源代码6 项目: blog_demos   文件: GroovyBeanDefinitionReader.java
/**
 * Define a Spring namespace definition to use.
 * @param definition the namespace definition
 */
public void xmlns(Map<String, String> definition) {
	if (!definition.isEmpty()) {
		for (Map.Entry<String,String> entry : definition.entrySet()) {
			String namespace = entry.getKey();
			String uri = entry.getValue();
			if (uri == null) {
				throw new IllegalArgumentException("Namespace definition must supply a non-null URI");
			}
			NamespaceHandler namespaceHandler = this.xmlBeanDefinitionReader.getNamespaceHandlerResolver().resolve(uri);
			if (namespaceHandler == null) {
				throw new BeanDefinitionParsingException(new Problem("No namespace handler found for URI: " + uri,
						new Location(new DescriptiveResource(("Groovy")))));
			}
			this.namespaces.put(namespace, uri);
		}
	}
}
 
@Test
public void configurationClassesMayNotBeFinal() {
	@Configuration
	final class Config { }

	BeanDefinition configBeanDef = rootBeanDefinition(Config.class).getBeanDefinition();
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", configBeanDef);

	try {
		ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
		pp.postProcessBeanFactory(beanFactory);
		fail("expected exception");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue(ex.getMessage(), ex.getMessage().contains("Remove the final modifier"));
	}
}
 
/**
 * Define a Spring XML namespace definition to use.
 * @param definition the namespace definition
 */
public void xmlns(Map<String, String> definition) {
	if (!definition.isEmpty()) {
		for (Map.Entry<String,String> entry : definition.entrySet()) {
			String namespace = entry.getKey();
			String uri = entry.getValue();
			if (uri == null) {
				throw new IllegalArgumentException("Namespace definition must supply a non-null URI");
			}
			NamespaceHandler namespaceHandler = this.groovyDslXmlBeanDefinitionReader.getNamespaceHandlerResolver().resolve(
				uri);
			if (namespaceHandler == null) {
				throw new BeanDefinitionParsingException(new Problem("No namespace handler found for URI: " + uri,
						new Location(new DescriptiveResource(("Groovy")))));
			}
			this.namespaces.put(namespace, uri);
		}
	}
}
 
@Test
public void testDuplicatePointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutDuplication.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void testMissingPointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutMissing.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void simpleCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(A.class), "A");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.B' " +
					"to import class 'AbstractCircularImportDetectionTests.A'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
public void complexCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(X.class), "X");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.Z2' " +
					"to import class 'AbstractCircularImportDetectionTests.Z'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
@SuppressWarnings("resource")
public void testInvalidConfigScopedProxy() throws Exception {
	assertThatExceptionOfType(BeanDefinitionParsingException.class).isThrownBy(() ->
			new ClassPathXmlApplicationContext("org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml"))
		.withMessageContaining("Cannot define both 'scope-resolver' and 'scoped-proxy' on <component-scan> tag")
		.withMessageContaining("Offending resource: class path resource [org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml]");
}
 
@Test
public void testDuplicatePointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutDuplication.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void testMissingPointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutMissing.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void simpleCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(A.class), "A");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.B' " +
					"to import class 'AbstractCircularImportDetectionTests.A'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
public void complexCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(X.class), "X");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.Z2' " +
					"to import class 'AbstractCircularImportDetectionTests.Z'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
@SuppressWarnings("resource")
public void testInvalidConfigScopedProxy() throws Exception {
	exception.expect(BeanDefinitionParsingException.class);
	exception.expectMessage(containsString("Cannot define both 'scope-resolver' and 'scoped-proxy' on <component-scan> tag"));
	exception.expectMessage(containsString("Offending resource: class path resource [org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml]"));

	new ClassPathXmlApplicationContext("org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml");
}
 
源代码19 项目: lams   文件: GroovyBeanDefinitionReader.java
/**
 * Load bean definitions from the specified Groovy script or XML file.
 * <p>Note that {@code ".xml"} files will be parsed as XML content; all other kinds
 * of resources will be parsed as Groovy scripts.
 * @param encodedResource the resource descriptor for the Groovy script or XML file,
 * allowing specification of an encoding to use for parsing the file
 * @return the number of bean definitions found
 * @throws BeanDefinitionStoreException in case of loading or parsing errors
 */
public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException {
	// Check for XML files and redirect them to the "standard" XmlBeanDefinitionReader
	String filename = encodedResource.getResource().getFilename();
	if (StringUtils.endsWithIgnoreCase(filename, ".xml")) {
		return this.standardXmlBeanDefinitionReader.loadBeanDefinitions(encodedResource);
	}

	Closure beans = new Closure(this) {
		public Object call(Object[] args) {
			invokeBeanDefiningClosure((Closure) args[0]);
			return null;
		}
	};
	Binding binding = new Binding() {
		@Override
		public void setVariable(String name, Object value) {
			if (currentBeanDefinition != null) {
				applyPropertyToBeanDefinition(name, value);
			}
			else {
				super.setVariable(name, value);
			}
		}
	};
	binding.setVariable("beans", beans);

	int countBefore = getRegistry().getBeanDefinitionCount();
	try {
		GroovyShell shell = new GroovyShell(getResourceLoader().getClassLoader(), binding);
		shell.evaluate(encodedResource.getReader(), "beans");
	}
	catch (Throwable ex) {
		throw new BeanDefinitionParsingException(new Problem("Error evaluating Groovy script: " + ex.getMessage(),
				new Location(encodedResource.getResource()), null, ex));
	}
	return getRegistry().getBeanDefinitionCount() - countBefore;
}
 
源代码20 项目: blog_demos   文件: GroovyBeanDefinitionReader.java
/**
 * Load bean definitions from the specified Groovy script.
 * @param encodedResource the resource descriptor for the Groovy script,
 * allowing to specify an encoding to use for parsing the file
 * @return the number of bean definitions found
 * @throws BeanDefinitionStoreException in case of loading or parsing errors
 */
public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException {
	Closure beans = new Closure(this){
		public Object call(Object[] args) {
			invokeBeanDefiningClosure((Closure) args[0]);
			return null;
		}
	};
	Binding binding = new Binding() {
		@Override
		public void setVariable(String name, Object value) {
			if (currentBeanDefinition !=null) {
				applyPropertyToBeanDefinition(name, value);
			}
			else {
				super.setVariable(name, value);
			}
		}
	};
	binding.setVariable("beans", beans);

	int countBefore = getRegistry().getBeanDefinitionCount();
	try {
		GroovyShell shell = new GroovyShell(getResourceLoader().getClassLoader(), binding);
		shell.evaluate(encodedResource.getReader(), encodedResource.getResource().getFilename());
	}
	catch (Throwable ex) {
		throw new BeanDefinitionParsingException(new Problem("Error evaluating Groovy script: " + ex.getMessage(),
				new Location(encodedResource.getResource()), null, ex));
	}
	return getRegistry().getBeanDefinitionCount() - countBefore;
}
 
@Test
public void testDuplicatePointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutDuplication.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void testMissingPointcutConfig() {
	try {
		DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
		new XmlBeanDefinitionReader(bf).loadBeanDefinitions(
				qualifiedResource(getClass(), "pointcutMissing.xml"));
		fail("parsing should have caused a BeanDefinitionStoreException");
	}
	catch (BeanDefinitionStoreException ex) {
		assertTrue(ex.contains(BeanDefinitionParsingException.class));
	}
}
 
@Test
public void simpleCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(A.class), "A");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.B' " +
					"to import class 'AbstractCircularImportDetectionTests.A'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
public void complexCircularImportIsDetected() throws Exception {
	boolean threw = false;
	try {
		newParser().parse(loadAsConfigurationSource(X.class), "X");
	}
	catch (BeanDefinitionParsingException ex) {
		assertTrue("Wrong message. Got: " + ex.getMessage(),
				ex.getMessage().contains(
					"Illegal attempt by @Configuration class 'AbstractCircularImportDetectionTests.Z2' " +
					"to import class 'AbstractCircularImportDetectionTests.Z'"));
		threw = true;
	}
	assertTrue(threw);
}
 
@Test
@SuppressWarnings("resource")
public void testInvalidConfigScopedProxy() throws Exception {
	exception.expect(BeanDefinitionParsingException.class);
	exception.expectMessage(containsString("Cannot define both 'scope-resolver' and 'scoped-proxy' on <component-scan> tag"));
	exception.expectMessage(containsString("Offending resource: class path resource [org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml]"));
	new ClassPathXmlApplicationContext("org/springframework/context/annotation/scopedProxyInvalidConfigTests.xml");
}
 
/**
 * Load bean definitions from the specified Groovy script or XML file.
 * <p>Note that {@code ".xml"} files will be parsed as XML content; all other kinds
 * of resources will be parsed as Groovy scripts.
 * @param encodedResource the resource descriptor for the Groovy script or XML file,
 * allowing specification of an encoding to use for parsing the file
 * @return the number of bean definitions found
 * @throws BeanDefinitionStoreException in case of loading or parsing errors
 */
public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException {
	// Check for XML files and redirect them to the "standard" XmlBeanDefinitionReader
	String filename = encodedResource.getResource().getFilename();
	if (StringUtils.endsWithIgnoreCase(filename, ".xml")) {
		return this.standardXmlBeanDefinitionReader.loadBeanDefinitions(encodedResource);
	}

	Closure beans = new Closure(this) {
		public Object call(Object[] args) {
			invokeBeanDefiningClosure((Closure) args[0]);
			return null;
		}
	};
	Binding binding = new Binding() {
		@Override
		public void setVariable(String name, Object value) {
			if (currentBeanDefinition != null) {
				applyPropertyToBeanDefinition(name, value);
			}
			else {
				super.setVariable(name, value);
			}
		}
	};
	binding.setVariable("beans", beans);

	int countBefore = getRegistry().getBeanDefinitionCount();
	try {
		GroovyShell shell = new GroovyShell(getResourceLoader().getClassLoader(), binding);
		shell.evaluate(encodedResource.getReader(), "beans");
	}
	catch (Throwable ex) {
		throw new BeanDefinitionParsingException(new Problem("Error evaluating Groovy script: " + ex.getMessage(),
				new Location(encodedResource.getResource()), null, ex));
	}
	return getRegistry().getBeanDefinitionCount() - countBefore;
}
 
@Test
public void testFinalBeanMethod() {
	assertThatExceptionOfType(BeanDefinitionParsingException.class).isThrownBy(() ->
			initBeanFactory(ConfigWithFinalBean.class));
}
 
@Test(expected = BeanDefinitionParsingException.class)
public void testConfigFileParsingError() {
	new GenericGroovyApplicationContext("org/springframework/context/groovy/applicationContext-error.groovy");
}
 
/**
 * Load bean definitions from the specified Groovy script or XML file.
 * <p>Note that {@code ".xml"} files will be parsed as XML content; all other kinds
 * of resources will be parsed as Groovy scripts.
 * @param encodedResource the resource descriptor for the Groovy script or XML file,
 * allowing specification of an encoding to use for parsing the file
 * @return the number of bean definitions found
 * @throws BeanDefinitionStoreException in case of loading or parsing errors
 */
public int loadBeanDefinitions(EncodedResource encodedResource) throws BeanDefinitionStoreException {
	// Check for XML files and redirect them to the "standard" XmlBeanDefinitionReader
	String filename = encodedResource.getResource().getFilename();
	if (StringUtils.endsWithIgnoreCase(filename, ".xml")) {
		return this.standardXmlBeanDefinitionReader.loadBeanDefinitions(encodedResource);
	}

	if (logger.isTraceEnabled()) {
		logger.trace("Loading Groovy bean definitions from " + encodedResource);
	}

	Closure beans = new Closure(this) {
		@Override
		public Object call(Object[] args) {
			invokeBeanDefiningClosure((Closure) args[0]);
			return null;
		}
	};
	Binding binding = new Binding() {
		@Override
		public void setVariable(String name, Object value) {
			if (currentBeanDefinition != null) {
				applyPropertyToBeanDefinition(name, value);
			}
			else {
				super.setVariable(name, value);
			}
		}
	};
	binding.setVariable("beans", beans);

	int countBefore = getRegistry().getBeanDefinitionCount();
	try {
		GroovyShell shell = new GroovyShell(getBeanClassLoader(), binding);
		shell.evaluate(encodedResource.getReader(), "beans");
	}
	catch (Throwable ex) {
		throw new BeanDefinitionParsingException(new Problem("Error evaluating Groovy script: " + ex.getMessage(),
				new Location(encodedResource.getResource()), null, ex));
	}

	int count = getRegistry().getBeanDefinitionCount() - countBefore;
	if (logger.isDebugEnabled()) {
		logger.debug("Loaded " + count + " bean definitions from " + encodedResource);
	}
	return count;
}
 
@Test
public void testFinalBeanMethod() {
	exception.expect(BeanDefinitionParsingException.class);
	initBeanFactory(ConfigWithFinalBean.class);
}
 
 同包方法