alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Spring Framework example source code file (ComponentScanParserBeanDefinitionDefaultsTests.java)

This example Spring Framework source code file (ComponentScanParserBeanDefinitionDefaultsTests.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Spring Framework tags/keywords

constructordependencytestbean, defaultstestbean, defaultstestbean, genericapplicationcontext, genericapplicationcontext, init_count, location_prefix, propertydependencytestbean, string, string, testcase, unsatisfieddependencyexception, xmlbeandefinitionreader, xmlbeandefinitionreader

The Spring Framework ComponentScanParserBeanDefinitionDefaultsTests.java source code

/*
 * Copyright 2002-2007 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.context.annotation;

import junit.framework.TestCase;

import org.springframework.beans.factory.UnsatisfiedDependencyException;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.GenericApplicationContext;

/**
 * @author Mark Fisher
 */
public class ComponentScanParserBeanDefinitionDefaultsTests extends TestCase {

	private static final String TEST_BEAN_NAME = "componentScanParserBeanDefinitionDefaultsTests.DefaultsTestBean";

	private static final String LOCATION_PREFIX = "org/springframework/context/annotation/";


	public void setUp() {
		DefaultsTestBean.INIT_COUNT = 0;
	}

	public void testDefaultLazyInit() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultWithNoOverridesTests.xml");
		assertFalse("lazy-init should be false", context.getBeanDefinition(TEST_BEAN_NAME).isLazyInit());
		assertEquals("initCount should be 0", 0, DefaultsTestBean.INIT_COUNT);
		context.refresh();
		assertEquals("bean should have been instantiated", 1, DefaultsTestBean.INIT_COUNT);
	}

	public void testLazyInitTrue() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultLazyInitTrueTests.xml");
		assertTrue("lazy-init should be true", context.getBeanDefinition(TEST_BEAN_NAME).isLazyInit());
		assertEquals("initCount should be 0", 0, DefaultsTestBean.INIT_COUNT);
		context.refresh();
		assertEquals("bean should not have been instantiated yet", 0, DefaultsTestBean.INIT_COUNT);
		context.getBean(TEST_BEAN_NAME);
		assertEquals("bean should have been instantiated", 1, DefaultsTestBean.INIT_COUNT);
	}

	public void testLazyInitFalse() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultLazyInitFalseTests.xml");
		assertFalse("lazy-init should be false", context.getBeanDefinition(TEST_BEAN_NAME).isLazyInit());
		assertEquals("initCount should be 0", 0, DefaultsTestBean.INIT_COUNT);
		context.refresh();
		assertEquals("bean should have been instantiated", 1, DefaultsTestBean.INIT_COUNT);
	}

	public void testDefaultAutowire() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultWithNoOverridesTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNull("no dependencies should have been autowired", bean.getConstructorDependency());
		assertNull("no dependencies should have been autowired", bean.getPropertyDependency1());
		assertNull("no dependencies should have been autowired", bean.getPropertyDependency2());
	}

	public void testAutowireNo() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultAutowireNoTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNull("no dependencies should have been autowired", bean.getConstructorDependency());
		assertNull("no dependencies should have been autowired", bean.getPropertyDependency1());
		assertNull("no dependencies should have been autowired", bean.getPropertyDependency2());
	}

	public void testAutowireConstructor() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultAutowireConstructorTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNotNull("constructor dependency should have been autowired", bean.getConstructorDependency());
		assertEquals("cd", bean.getConstructorDependency().getName());
		assertNull("property dependencies should not have been autowired", bean.getPropertyDependency1());
		assertNull("property dependencies should not have been autowired", bean.getPropertyDependency2());
	}

	public void testAutowireByType() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultAutowireByTypeTests.xml");
		try {
			context.refresh();
			fail("expected exception due to multiple matches for byType autowiring");
		}
		catch (UnsatisfiedDependencyException e) {
			// expected
		}
	}

	public void testAutowireByName() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultAutowireByNameTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNull("constructor dependency should not have been autowired", bean.getConstructorDependency());
		assertNull("propertyDependency1 should not have been autowired", bean.getPropertyDependency1());
		assertNotNull("propertyDependency2 should have been autowired", bean.getPropertyDependency2());
		assertEquals("pd2", bean.getPropertyDependency2().getName());
	}

	public void testDefaultDependencyCheck() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultWithNoOverridesTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNull("constructor dependency should not have been autowired", bean.getConstructorDependency());
		assertNull("property dependencies should not have been autowired", bean.getPropertyDependency1());
		assertNull("property dependencies should not have been autowired", bean.getPropertyDependency2());
	}

	public void testDependencyCheckAll() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultDependencyCheckAllTests.xml");
		try {
			context.refresh();
			fail("expected exception due to dependency check");
		}
		catch (UnsatisfiedDependencyException e) {
			// expected
		}
	}

	public void testDependencyCheckObjectsWithAutowireByName() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultDependencyCheckObjectsWithAutowireByNameTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertNull("constructor dependency should not have been autowired", bean.getConstructorDependency());
		assertNotNull("property dependencies should have been autowired", bean.getPropertyDependency1());
		assertNotNull("property dependencies should have been autowired", bean.getPropertyDependency2());
	}

	public void testDefaultInitAndDestroyMethodsNotDefined() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultWithNoOverridesTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertFalse("bean should not have been initialized", bean.isInitialized());
		context.close();
		assertFalse("bean should not have been destroyed", bean.isDestroyed());
	}

	public void testDefaultInitAndDestroyMethodsDefined() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultInitAndDestroyMethodsTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertTrue("bean should have been initialized", bean.isInitialized());
		context.close();
		assertTrue("bean should have been destroyed", bean.isDestroyed());
	}

	public void testDefaultNonExistingInitAndDestroyMethodsDefined() {
		GenericApplicationContext context = new GenericApplicationContext();
		XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
		reader.loadBeanDefinitions(LOCATION_PREFIX + "defaultNonExistingInitAndDestroyMethodsTests.xml");
		context.refresh();
		DefaultsTestBean bean = (DefaultsTestBean) context.getBean(TEST_BEAN_NAME);
		assertFalse("bean should not have been initialized", bean.isInitialized());
		context.close();
		assertFalse("bean should not have been destroyed", bean.isDestroyed());
	}


	private static class DefaultsTestBean {

		static int INIT_COUNT;

		private ConstructorDependencyTestBean constructorDependency;

		private PropertyDependencyTestBean propertyDependency1;

		private PropertyDependencyTestBean propertyDependency2;

		private boolean initialized;

		private boolean destroyed;


		public DefaultsTestBean() {
			INIT_COUNT++;
		}

		public DefaultsTestBean(ConstructorDependencyTestBean cdtb) {
			this();
			this.constructorDependency = cdtb;
		}

		public void init() {
			this.initialized = true;
		}

		public boolean isInitialized() {
			return this.initialized;
		}

		public void destroy() {
			this.destroyed = true;
		}

		public boolean isDestroyed() {
			return this.destroyed;
		}

		public void setPropertyDependency1(PropertyDependencyTestBean pdtb) {
			this.propertyDependency1 = pdtb;
		}

		public void setPropertyDependency2(PropertyDependencyTestBean pdtb) {
			this.propertyDependency2 = pdtb;
		}

		public ConstructorDependencyTestBean getConstructorDependency() {
			return this.constructorDependency;
		}

		public PropertyDependencyTestBean getPropertyDependency1() {
			return this.propertyDependency1;
		}

		public PropertyDependencyTestBean getPropertyDependency2() {
			return this.propertyDependency2;
		}
	}


	private static class PropertyDependencyTestBean {

		private String name;

		public PropertyDependencyTestBean(String name) {
			this.name = name;
		}

		public String getName() {
			return this.name;
		}
	}


	private static class ConstructorDependencyTestBean {

		private String name;

		public ConstructorDependencyTestBean(String name) {
			this.name = name;
		}

		public String getName() {
			return this.name;
		}
	}

}

Other Spring Framework examples (source code examples)

Here is a short list of links related to this Spring Framework ComponentScanParserBeanDefinitionDefaultsTests.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.