{
//leverage the Scripting post processor
LangNamespaceUtils.registerScriptFactoryPostProcessorIfNecessary(parserContext.getRegistry());
//do a bean definition
GenericBeanDefinition beanDef = new GenericBeanDefinition();
beanDef.setSource(parserContext.extractSource(element));
beanDef.setBeanClass(ColdFusionComponentFactory.class);
// Determine bean scope.
String scope = element.getAttribute(SCOPE_ATTRIBUTE);
if (StringUtils.hasLength(scope))
{
beanDef.setScope(scope);
}
// Determine autowire mode.
String autowire = element.getAttribute(AUTOWIRE_ATTRIBUTE);
int autowireMode = parserContext.getDelegate().getAutowireMode(autowire);
// Only "byType" and "byName" supported, but maybe other default
// inherited...
if (autowireMode == GenericBeanDefinition.AUTOWIRE_AUTODETECT)
{
autowireMode = GenericBeanDefinition.AUTOWIRE_BY_TYPE;
}
else if (autowireMode == GenericBeanDefinition.AUTOWIRE_CONSTRUCTOR)
{
autowireMode = GenericBeanDefinition.AUTOWIRE_NO;
}
beanDef.setAutowireMode(autowireMode);
// Determine dependency check setting.
String dependencyCheck = element.getAttribute(DEPENDENCY_CHECK_ATTRIBUTE);
beanDef.setDependencyCheck(parserContext.getDelegate().getDependencyCheck(dependencyCheck));
// Retrieve the defaults for bean definitions within this parser context
BeanDefinitionDefaults beanDefinitionDefaults = parserContext.getDelegate().getBeanDefinitionDefaults();
// Determine init method and destroy method.
String initMethod = element.getAttribute(INIT_METHOD_ATTRIBUTE);
if (StringUtils.hasLength(initMethod))
{
beanDef.setInitMethodName(initMethod);
}
else if (beanDefinitionDefaults.getInitMethodName() != null)
{
beanDef.setInitMethodName(beanDefinitionDefaults.getInitMethodName());
}
String destroyMethod = element.getAttribute(DESTROY_METHOD_ATTRIBUTE);
if (StringUtils.hasLength(destroyMethod))
{
beanDef.setDestroyMethodName(destroyMethod);
}
else if (beanDefinitionDefaults.getDestroyMethodName() != null)
{
beanDef.setDestroyMethodName(beanDefinitionDefaults.getDestroyMethodName());
}
ConstructorArgumentValues constructorArgs = beanDef.getConstructorArgumentValues();
String scriptSource = element.getAttribute(SCRIPT_SOURCE_ATTRIBUTE);
//have to do this here, as otherwise the Script post processor will take over
if(!element.hasAttribute(SCRIPT_SOURCE_RELATIVE_ATTRIBUTE) || element.getAttribute(SCRIPT_SOURCE_RELATIVE_ATTRIBUTE).equals("true"))