/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.config.spring.parsers.generic; import org.mule.runtime.config.spring.parsers.AbstractMuleBeanDefinitionParser; import org.w3c.dom.Element; /** * <p> * Contructs a single, standalone bean from an element - it is not injected into any other object. This parser can be configured * to automatically set the class of the object, the init and destroy methods and whether this object is a singleton. * </p> * <p> * Typically, you should use {@link MuleOrphanDefinitionParser} instead of this class, since these elements occur in the <mule> * top level element. * </p> */ public class OrphanDefinitionParser extends AbstractMuleBeanDefinitionParser { private Class<?> beanClass = null; private boolean dynamicClass = false; /** * This constructor assumes that the class name will be explicitly specified as an attribute on the element. */ public OrphanDefinitionParser(boolean singleton) { this.singleton = singleton; dynamicClass = true; } public OrphanDefinitionParser(Class<?> beanClass, boolean singleton) { this.beanClass = beanClass; this.singleton = singleton; } @Override protected void preProcess(Element element) { super.preProcess(element); // top level beans need an ID element AutoIdUtils.ensureUniqueId(element, "bean"); if (dynamicClass) { beanClass = null; } } @Override protected Class<?> getBeanClass(Element element) { return beanClass; } }