/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.cloud.test;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class ExampleProtoBeanFactory implements ApplicationContextAware {
private static int factoryMethodInvocationCount = 0;
@Autowired
ApplicationContext applicationContext;
private static final Map<String, ExampleProtoBean> textToExampleProtoBeanMap = Collections
.synchronizedMap(new HashMap<String, ExampleProtoBean>());
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
this.applicationContext = arg0;
}
public ExampleProtoBean createExampleProtoBean(String text) {
factoryMethodInvocationCount++;
System.out.println("Number of times factory method invoked : " + factoryMethodInvocationCount);
if (textToExampleProtoBeanMap.get(text) != null) {
return textToExampleProtoBeanMap.get(text);
}
ExampleProtoBean bean = (ExampleProtoBean) applicationContext.getBean("exampleProtoBean", text);
textToExampleProtoBeanMap.put(text, bean);
return bean;
}
}