1 changed files with 0 additions and 185 deletions
@ -1,185 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2002-2018 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 |
|
||||||
* |
|
||||||
* https://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.testfixture.beans; |
|
||||||
|
|
||||||
import org.springframework.beans.BeansException; |
|
||||||
import org.springframework.beans.factory.BeanFactory; |
|
||||||
import org.springframework.beans.factory.BeanFactoryAware; |
|
||||||
import org.springframework.beans.factory.BeanNameAware; |
|
||||||
import org.springframework.beans.factory.DisposableBean; |
|
||||||
import org.springframework.beans.factory.FactoryBean; |
|
||||||
import org.springframework.beans.factory.InitializingBean; |
|
||||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory; |
|
||||||
|
|
||||||
/** |
|
||||||
* Simple factory to allow testing of FactoryBean support in AbstractBeanFactory. |
|
||||||
* Depending on whether its singleton property is set, it will return a singleton |
|
||||||
* or a prototype instance. |
|
||||||
* |
|
||||||
* <p>Implements InitializingBean interface, so we can check that |
|
||||||
* factories get this lifecycle callback if they want. |
|
||||||
* |
|
||||||
* @author Rod Johnson |
|
||||||
* @author Chris Beams |
|
||||||
* @since 10.03.2003 |
|
||||||
*/ |
|
||||||
public class DummyFactory |
|
||||||
implements FactoryBean<Object>, BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean { |
|
||||||
|
|
||||||
public static final String SINGLETON_NAME = "Factory singleton"; |
|
||||||
|
|
||||||
private static boolean prototypeCreated; |
|
||||||
|
|
||||||
/** |
|
||||||
* Clear static state. |
|
||||||
*/ |
|
||||||
public static void reset() { |
|
||||||
prototypeCreated = false; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Default is for factories to return a singleton instance. |
|
||||||
*/ |
|
||||||
private boolean singleton = true; |
|
||||||
|
|
||||||
private String beanName; |
|
||||||
|
|
||||||
private AutowireCapableBeanFactory beanFactory; |
|
||||||
|
|
||||||
private boolean postProcessed; |
|
||||||
|
|
||||||
private boolean initialized; |
|
||||||
|
|
||||||
private TestBean testBean; |
|
||||||
|
|
||||||
private TestBean otherTestBean; |
|
||||||
|
|
||||||
|
|
||||||
public DummyFactory() { |
|
||||||
this.testBean = new TestBean(); |
|
||||||
this.testBean.setName(SINGLETON_NAME); |
|
||||||
this.testBean.setAge(25); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Return if the bean managed by this factory is a singleton. |
|
||||||
* @see FactoryBean#isSingleton() |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public boolean isSingleton() { |
|
||||||
return this.singleton; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Set if the bean managed by this factory is a singleton. |
|
||||||
*/ |
|
||||||
public void setSingleton(boolean singleton) { |
|
||||||
this.singleton = singleton; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void setBeanName(String beanName) { |
|
||||||
this.beanName = beanName; |
|
||||||
} |
|
||||||
|
|
||||||
public String getBeanName() { |
|
||||||
return beanName; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void setBeanFactory(BeanFactory beanFactory) { |
|
||||||
this.beanFactory = (AutowireCapableBeanFactory) beanFactory; |
|
||||||
this.beanFactory.applyBeanPostProcessorsBeforeInitialization(this.testBean, this.beanName); |
|
||||||
} |
|
||||||
|
|
||||||
public BeanFactory getBeanFactory() { |
|
||||||
return beanFactory; |
|
||||||
} |
|
||||||
|
|
||||||
public void setPostProcessed(boolean postProcessed) { |
|
||||||
this.postProcessed = postProcessed; |
|
||||||
} |
|
||||||
|
|
||||||
public boolean isPostProcessed() { |
|
||||||
return postProcessed; |
|
||||||
} |
|
||||||
|
|
||||||
public void setOtherTestBean(TestBean otherTestBean) { |
|
||||||
this.otherTestBean = otherTestBean; |
|
||||||
this.testBean.setSpouse(otherTestBean); |
|
||||||
} |
|
||||||
|
|
||||||
public TestBean getOtherTestBean() { |
|
||||||
return otherTestBean; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public void afterPropertiesSet() { |
|
||||||
if (initialized) { |
|
||||||
throw new RuntimeException("Cannot call afterPropertiesSet twice on the one bean"); |
|
||||||
} |
|
||||||
this.initialized = true; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Was this initialized by invocation of the |
|
||||||
* afterPropertiesSet() method from the InitializingBean interface? |
|
||||||
*/ |
|
||||||
public boolean wasInitialized() { |
|
||||||
return initialized; |
|
||||||
} |
|
||||||
|
|
||||||
public static boolean wasPrototypeCreated() { |
|
||||||
return prototypeCreated; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Return the managed object, supporting both singleton |
|
||||||
* and prototype mode. |
|
||||||
* @see FactoryBean#getObject() |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public Object getObject() throws BeansException { |
|
||||||
if (isSingleton()) { |
|
||||||
return this.testBean; |
|
||||||
} |
|
||||||
else { |
|
||||||
TestBean prototype = new TestBean("prototype created at " + System.currentTimeMillis(), 11); |
|
||||||
if (this.beanFactory != null) { |
|
||||||
this.beanFactory.applyBeanPostProcessorsBeforeInitialization(prototype, this.beanName); |
|
||||||
} |
|
||||||
prototypeCreated = true; |
|
||||||
return prototype; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Class<?> getObjectType() { |
|
||||||
return TestBean.class; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public void destroy() { |
|
||||||
if (this.testBean != null) { |
|
||||||
this.testBean.setName(null); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
Loading…
Reference in new issue