Example usage for org.springframework.beans.factory.support BeanDefinitionBuilder getRawBeanDefinition

List of usage examples for org.springframework.beans.factory.support BeanDefinitionBuilder getRawBeanDefinition

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support BeanDefinitionBuilder getRawBeanDefinition.

Prototype

public AbstractBeanDefinition getRawBeanDefinition() 

Source Link

Document

Return the current BeanDefinition object in its raw (unvalidated) form.

Usage

From source file:org.smf4j.spring.RegistryNodeTemplateDefinitionParser.java

protected String parseNode(ParserContext context, Element element, BeanDefinitionBuilder builder) {
    String name = element.getAttribute(NAME_ATTR);
    if (!StringUtils.hasLength(name)) {
        context.getReaderContext().error("'node' elements must have a 'name' attribute.", element);
    }//from   w  w w  .ja  v  a  2  s . c o  m

    // Process all child node tags
    ManagedList<RuntimeBeanReference> childProxyIds = new ManagedList<RuntimeBeanReference>();

    NodeList childNodes = element.getChildNodes();
    for (int i = 0; i < childNodes.getLength(); i++) {
        Node childNode = childNodes.item(i);
        if (childNode.getNodeType() != Node.ELEMENT_NODE) {
            continue;
        }
        Element child = (Element) childNode;
        String childTagName = child.getLocalName();
        String childProxyId = null;

        // Parse the child node
        if (NODE_TAG.equals(childTagName)) {
            BeanDefinitionBuilder bdb = getBdb(RegistryNodeProxy.class);
            childProxyId = parseNode(context, child, bdb);
        } else if (NODE_TEMPLATE_TAG.equals(childTagName)) {
            childProxyId = createNodeTemplateRef(context, child);
        } else if (COUNTER_TAG.equals(childTagName)) {
            CounterConfig config = new CounterConfig(CounterType.ADD, child);
            childProxyId = createCounter(context, child, config);
        } else if (MIN_TAG.equals(childTagName)) {
            CounterConfig config = new CounterConfig(CounterType.MIN, child);
            childProxyId = createCounter(context, child, config);
        } else if (MAX_TAG.equals(childTagName)) {
            CounterConfig config = new CounterConfig(CounterType.MAX, child);
            childProxyId = createCounter(context, child, config);
        } else if (CUSTOM_TAG.equals(childTagName)) {
            childProxyId = parseCustom(context, child, builder.getRawBeanDefinition());
        } else if (NORMALIZE_TAG.equals(childTagName)) {
            childProxyId = createNormalize(context, child);
        } else if (RATIO_TAG.equals(childTagName)) {
            childProxyId = createRatio(context, child);
        } else if (RANGEGROUP_TAG.equals(childTagName)) {
            childProxyId = createRangeGroup(context, child);
        } else {
            context.getReaderContext().error("Unknown tag", child);
        }

        if (childProxyId != null) {
            childProxyIds.add(new RuntimeBeanReference(childProxyId));
        }
    }

    // Finish building the node proxy
    builder.addPropertyValue(NAME_ATTR, name);
    builder.addPropertyValue(CHILDREN_ATTR, childProxyIds);
    String nodeId = context.getReaderContext().registerWithGeneratedName(builder.getBeanDefinition());

    return nodeId;
}

From source file:com.mtgi.analytics.aop.config.TemplateBeanDefinitionParser.java

/**
 * <p>Load the template BeanDefinition and call {@link #transform(ConfigurableListableBeanFactory, BeanDefinition, Element, ParserContext)}
 * to apply runtime configuration value to it.  <code>builder</code> will be configured to instantiate the bean
 * in the Spring context that we are parsing.</p>
 * /*from  ww  w  .  j  av  a2 s .  co m*/
 * <p>During parsing, an instance of {@link TemplateBeanDefinitionParser.TemplateComponentDefinition} is pushed onto <code>ParserContext</code> so
 * that nested tags can access the enclosing template configuration with a call to {@link #findEnclosingTemplateFactory(ParserContext)}.
 * Subclasses can override {@link #newComponentDefinition(String, Object, DefaultListableBeanFactory)} to provide a 
 * subclass of {@link TemplateBeanDefinitionParser.TemplateComponentDefinition} to the parser context if necessary.</p>
 */
@Override
protected final void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {

    //if we have multiple nested bean definitions, we only parse the template factory
    //once.  this allows configuration changes made by enclosing bean parsers to be inherited
    //by contained beans, which is quite useful.
    DefaultListableBeanFactory templateFactory = findEnclosingTemplateFactory(parserContext);
    TemplateComponentDefinition tcd = null;
    if (templateFactory == null) {

        //no nesting -- load the template XML configuration from the classpath.
        final BeanFactory parentFactory = (BeanFactory) parserContext.getRegistry();
        templateFactory = new DefaultListableBeanFactory(parentFactory);

        //load template bean definitions
        DefaultResourceLoader loader = new DefaultResourceLoader();
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(templateFactory);
        reader.setResourceLoader(loader);
        reader.setEntityResolver(new ResourceEntityResolver(loader));
        reader.loadBeanDefinitions(templateResource);

        //propagate factory post-processors from the source factory into the template
        //factory.
        BeanDefinition ppChain = new RootBeanDefinition(ChainingBeanFactoryPostProcessor.class);
        ppChain.getPropertyValues().addPropertyValue("targetFactory", templateFactory);
        parserContext.getReaderContext().registerWithGeneratedName(ppChain);

        //push component definition onto the parser stack for the benefit of
        //nested bean definitions.
        tcd = newComponentDefinition(element.getNodeName(), parserContext.extractSource(element),
                templateFactory);
        parserContext.pushContainingComponent(tcd);
    }

    try {
        //allow subclasses to apply overrides to the template bean definition.
        BeanDefinition def = templateFactory.getBeanDefinition(templateId);
        transform(templateFactory, def, element, parserContext);

        //setup our factory bean to instantiate the modified bean definition upon request.
        builder.addPropertyValue("beanFactory", templateFactory);
        builder.addPropertyValue("beanName", templateId);
        builder.getRawBeanDefinition().setAttribute("id", def.getAttribute("id"));

    } finally {
        if (tcd != null)
            parserContext.popContainingComponent();
    }
}

From source file:org.apache.smscserver.config.spring.ListenerBeanDefinitionParser.java

/**
 * {@inheritDoc}//from w w w .  jav  a 2s.  c  om
 */
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);

    if (StringUtils.hasText(element.getAttribute("port"))) {
        factoryBuilder.addPropertyValue("port", Integer.valueOf(element.getAttribute("port")));
    }

    SslConfiguration ssl = this.parseSsl(element);
    if (ssl != null) {
        factoryBuilder.addPropertyValue("sslConfiguration", ssl);
    }

    if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
        factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(element, "idle-timeout", 300));
    }

    String localAddress = SpringUtil.parseStringFromInetAddress(element, "local-address");
    if (localAddress != null) {
        factoryBuilder.addPropertyValue("serverAddress", localAddress);
    }
    factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(element, "implicit-ssl", false));

    Element blacklistElm = SpringUtil.getChildElement(element, SmscServerNamespaceHandler.SMSCSERVER_NS,
            "blacklist");
    if (blacklistElm != null) {
        this.LOG.warn(
                "Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'remote-ip-filter' instead. ");
        try {
            RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.DENY,
                    blacklistElm.getTextContent());
            factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter);
        } catch (UnknownHostException e) {
            throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e);
        }
    }

    Element remoteIpFilterElement = SpringUtil.getChildElement(element,
            SmscServerNamespaceHandler.SMSCSERVER_NS, "remote-ip-filter");
    if (remoteIpFilterElement != null) {
        if (blacklistElm != null) {
            throw new SmscServerConfigurationException(
                    "Element 'remote-ip-filter' may not be used when 'blacklist' element is specified. ");
        }
        String filterType = remoteIpFilterElement.getAttribute("type");
        try {
            RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.parse(filterType),
                    remoteIpFilterElement.getTextContent());
            factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter);
        } catch (UnknownHostException e) {
            throw new IllegalArgumentException(
                    "Invalid IP address or subnet in the 'remote-ip-filter' element");
        }
    }

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();

    String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
    this.registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
    builder.getRawBeanDefinition().setFactoryMethodName("createListener");
}

From source file:org.apache.ftpserver.config.spring.UserManagerBeanDefinitionParser.java

@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    Class<?> factoryClass;/*  w w w.  jav a  2 s. c om*/
    if (element.getLocalName().equals("file-user-manager")) {
        factoryClass = PropertiesUserManagerFactory.class;
    } else {
        factoryClass = DbUserManagerFactory.class;
    }
    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(factoryClass);

    // common for both user managers
    if (StringUtils.hasText(element.getAttribute("encrypt-passwords"))) {
        String encryptionStrategy = element.getAttribute("encrypt-passwords");

        if (encryptionStrategy.equals("true") || encryptionStrategy.equals("md5")) {
            factoryBuilder.addPropertyValue("passwordEncryptor", new Md5PasswordEncryptor());
        } else if (encryptionStrategy.equals("salted")) {
            factoryBuilder.addPropertyValue("passwordEncryptor", new SaltedPasswordEncryptor());
        } else {
            factoryBuilder.addPropertyValue("passwordEncryptor", new ClearTextPasswordEncryptor());
        }
    }

    if (factoryClass == PropertiesUserManagerFactory.class) {
        if (StringUtils.hasText(element.getAttribute("file"))) {
            factoryBuilder.addPropertyValue("file", element.getAttribute("file"));
        }
        if (StringUtils.hasText(element.getAttribute("url"))) {
            factoryBuilder.addPropertyValue("url", element.getAttribute("url"));
        }
    } else {
        Element dsElm = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS,
                "data-source");

        // schema ensure we get the right type of element
        Element springElm = SpringUtil.getChildElement(dsElm, null, null);
        Object o;
        if ("bean".equals(springElm.getLocalName())) {
            o = parserContext.getDelegate().parseBeanDefinitionElement(springElm, builder.getBeanDefinition());
        } else {
            // ref
            o = parserContext.getDelegate().parsePropertySubElement(springElm, builder.getBeanDefinition());

        }
        factoryBuilder.addPropertyValue("dataSource", o);

        factoryBuilder.addPropertyValue("sqlUserInsert", getSql(element, "insert-user"));
        factoryBuilder.addPropertyValue("sqlUserUpdate", getSql(element, "update-user"));
        factoryBuilder.addPropertyValue("sqlUserDelete", getSql(element, "delete-user"));
        factoryBuilder.addPropertyValue("sqlUserSelect", getSql(element, "select-user"));
        factoryBuilder.addPropertyValue("sqlUserSelectAll", getSql(element, "select-all-users"));
        factoryBuilder.addPropertyValue("sqlUserAdmin", getSql(element, "is-admin"));
        factoryBuilder.addPropertyValue("sqlUserAuthenticate", getSql(element, "authenticate"));
    }

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
    String factoryId = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryId);
    registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(factoryId);
    builder.getRawBeanDefinition().setFactoryMethodName("createUserManager");

}

From source file:org.apache.smscserver.config.spring.UserManagerBeanDefinitionParser.java

@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    Class<?> factoryClass;/*from w ww.  j  a  v a  2s.  com*/
    if (element.getLocalName().equals("file-user-manager")) {
        factoryClass = PropertiesUserManagerFactory.class;
    } else {
        factoryClass = DbUserManagerFactory.class;
    }

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(factoryClass);

    // common for both user managers
    if (StringUtils.hasText(element.getAttribute("encrypt-passwords"))) {
        String encryptionStrategy = element.getAttribute("encrypt-passwords");

        if (encryptionStrategy.equals("true") || encryptionStrategy.equals("md5")) {
            factoryBuilder.addPropertyValue("passwordEncryptor", new Md5PasswordEncryptor());
        } else if (encryptionStrategy.equals("salted")) {
            factoryBuilder.addPropertyValue("passwordEncryptor", new SaltedPasswordEncryptor());
        } else {
            factoryBuilder.addPropertyValue("passwordEncryptor", new ClearTextPasswordEncryptor());
        }
    }

    if (factoryClass == PropertiesUserManagerFactory.class) {
        if (StringUtils.hasText(element.getAttribute("file"))) {
            factoryBuilder.addPropertyValue("file", element.getAttribute("file"));
        }
        if (StringUtils.hasText(element.getAttribute("url"))) {
            factoryBuilder.addPropertyValue("url", element.getAttribute("url"));
        }
    } else {
        Element dsElm = SpringUtil.getChildElement(element, SmscServerNamespaceHandler.SMSCSERVER_NS,
                "data-source");

        // schema ensure we get the right type of element
        Element springElm = SpringUtil.getChildElement(dsElm, null, null);
        Object o;
        if ("bean".equals(springElm.getLocalName())) {
            o = parserContext.getDelegate().parseBeanDefinitionElement(springElm, builder.getBeanDefinition());
        } else {
            // ref
            o = parserContext.getDelegate().parsePropertySubElement(springElm, builder.getBeanDefinition());

        }
        factoryBuilder.addPropertyValue("dataSource", o);

        factoryBuilder.addPropertyValue("sqlUserInsert", this.getSql(element, "insert-user"));
        factoryBuilder.addPropertyValue("sqlUserUpdate", this.getSql(element, "update-user"));
        factoryBuilder.addPropertyValue("sqlUserDelete", this.getSql(element, "delete-user"));
        factoryBuilder.addPropertyValue("sqlUserSelect", this.getSql(element, "select-user"));
        factoryBuilder.addPropertyValue("sqlUserSelectAll", this.getSql(element, "select-all-users"));
        factoryBuilder.addPropertyValue("sqlUserAdmin", this.getSql(element, "is-admin"));
        factoryBuilder.addPropertyValue("sqlUserAuthenticate", this.getSql(element, "authenticate"));
    }

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();
    String factoryId = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryId);
    this.registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(factoryId);
    builder.getRawBeanDefinition().setFactoryMethodName("createUserManager");

}

From source file:org.jdal.vaadin.beans.TableBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from   w  w w  . j a va 2  s.c  o m*/
 */
@SuppressWarnings("rawtypes")
public BeanDefinition parse(Element element, ParserContext parserContext) {
    // Defaults
    String entity = null;

    if (element.hasAttribute(ENTITY))
        entity = element.getAttribute(ENTITY);

    String name = StringUtils.uncapitalize(StringUtils.substringAfterLast(entity, "."));

    if (element.hasAttribute(ID))
        name = element.getAttribute(ID);

    parserContext.pushContainingComponent(
            new CompositeComponentDefinition(name, parserContext.extractSource(element)));

    // Bean names
    String pageableTableBeanName = name + PAGEABLE_TABLE_SUFFIX;
    String tableBeanName = name + TABLE_SUFFIX;
    String dataSource = name + SERVICE_SUFFIX;
    String paginator = PAGINATOR_VIEW;
    String editor = name + EDITOR_SUFFIX;
    String actions = DefaultsBeanDefinitionParser.DEFAULT_TABLE_ACTIONS;
    String guiFactory = DefaultsBeanDefinitionParser.DEFAULT_GUI_FACTORY;
    String scope = BeanDefinition.SCOPE_PROTOTYPE;
    String pageableTableClass = DEFAULT_PAGEABLE_TABLE_CLASS;
    String tableClass = DEFAULT_TABLE_CLASS;

    if (element.hasAttribute(DATA_SOURCE))
        dataSource = element.getAttribute(DATA_SOURCE);

    if (element.hasAttribute(PAGINATOR))
        paginator = element.getAttribute(PAGINATOR);

    if (element.hasAttribute(ACTIONS))
        actions = element.getAttribute(ACTIONS);

    if (element.hasAttribute(GUI_FACTORY))
        guiFactory = element.getAttribute(GUI_FACTORY);

    if (element.hasAttribute(EDITOR))
        editor = element.getAttribute(EDITOR);

    if (element.hasAttribute(SCOPE))
        scope = element.getAttribute(SCOPE);

    if (element.hasAttribute(PAGEABLE_TABLE_CLASS))
        pageableTableClass = element.getAttribute(PAGEABLE_TABLE_CLASS);

    if (element.hasAttribute(TABLE_CLASS))
        tableClass = element.getAttribute(TABLE_CLASS);

    // create PageableTable
    BeanDefinitionBuilder bdb = BeanDefinitionBuilder.genericBeanDefinition(pageableTableClass);
    bdb.setScope(scope);
    bdb.addPropertyReference(DATA_SOURCE, dataSource);
    bdb.addPropertyReference(PAGINATOR_VIEW, paginator);
    bdb.addPropertyValue(NAME, pageableTableBeanName);
    bdb.addPropertyReference(TABLE, tableBeanName);
    bdb.addPropertyReference(GUI_FACTORY, guiFactory);
    bdb.addPropertyValue(EDITOR_NAME, editor);
    bdb.addPropertyValue(ENTITY_CLASS, entity);

    BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, TABLE_SERVICE);
    BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FILTER);
    BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, MESSAGE_SOURCE);
    BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FILTER_FORM);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, SORT_PROPERTY);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, ORDER);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, PAGE_SIZE);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, NATIVE_BUTTONS);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, PROPAGATE_SERVICE);

    if (!element.hasAttribute(USE_ACTIONS) || "true".equals(element.getAttribute(USE_ACTIONS)))
        bdb.addPropertyReference(ACTIONS, actions);

    parserContext.getDelegate().parseBeanDefinitionAttributes(element, pageableTableBeanName, null,
            bdb.getBeanDefinition());

    BeanDefinitionHolder holder = new BeanDefinitionHolder(bdb.getBeanDefinition(), pageableTableBeanName);

    // Test Decorators like aop:scoped-proxy
    NodeList childNodes = element.getChildNodes();
    for (int i = 0; i < childNodes.getLength(); i++) {
        Node n = childNodes.item(i);
        if (Node.ELEMENT_NODE != n.getNodeType() || COLUMNS.equals(n.getLocalName()))
            continue;

        NamespaceHandler handler = parserContext.getReaderContext().getNamespaceHandlerResolver()
                .resolve(n.getNamespaceURI());
        if (handler != null) {
            holder = handler.decorate(n, holder, parserContext);
        }
    }

    parserContext.registerBeanComponent(new BeanComponentDefinition(holder));

    // create ConfigurableTable
    bdb = BeanDefinitionBuilder.genericBeanDefinition(tableClass);
    bdb.setScope(BeanDefinition.SCOPE_PROTOTYPE);

    BeanDefinitionUtils.addPropertyReferenceIfNeeded(bdb, element, FIELD_FACTORY);
    BeanDefinitionUtils.addPropertyValueIfNeeded(bdb, element, MULTISELECT);

    if (element.hasAttribute(SELECTABLE)) {
        bdb.addPropertyValue(SELECTABLE, element.getAttribute(SELECTABLE));
    } else {
        // set selectable by default
        bdb.addPropertyValue(SELECTABLE, true);
    }

    // parse columns
    NodeList nl = element.getElementsByTagNameNS(element.getNamespaceURI(), COLUMNS);

    if (nl.getLength() > 0) {
        List columns = parserContext.getDelegate().parseListElement((Element) nl.item(0),
                bdb.getRawBeanDefinition());
        bdb.addPropertyValue(COLUMNS, columns);
    }

    registerBeanDefinition(element, parserContext, tableBeanName, bdb);

    parserContext.popAndRegisterContainingComponent();

    return null;
}

From source file:org.apache.ftpserver.config.spring.ListenerBeanDefinitionParser.java

/**
 * {@inheritDoc}//from  ww  w .  jav a  2 s. c  o  m
 */
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(ListenerFactory.class);

    if (StringUtils.hasText(element.getAttribute("port"))) {
        factoryBuilder.addPropertyValue("port", Integer.valueOf(element.getAttribute("port")));
    }

    SslConfiguration ssl = parseSsl(element);
    if (ssl != null) {
        factoryBuilder.addPropertyValue("sslConfiguration", ssl);
    }

    Element dataConElm = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS,
            "data-connection");
    DataConnectionConfiguration dc = parseDataConnection(dataConElm, ssl);
    factoryBuilder.addPropertyValue("dataConnectionConfiguration", dc);

    if (StringUtils.hasText(element.getAttribute("idle-timeout"))) {
        factoryBuilder.addPropertyValue("idleTimeout", SpringUtil.parseInt(element, "idle-timeout", 300));
    }

    String localAddress = SpringUtil.parseStringFromInetAddress(element, "local-address");
    if (localAddress != null) {
        factoryBuilder.addPropertyValue("serverAddress", localAddress);
    }
    factoryBuilder.addPropertyValue("implicitSsl", SpringUtil.parseBoolean(element, "implicit-ssl", false));

    Element blacklistElm = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS,
            "blacklist");
    if (blacklistElm != null) {
        LOG.warn(
                "Element 'blacklist' is deprecated, and may be removed in a future release. Please use 'remote-ip-filter' instead. ");
        try {
            RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.DENY,
                    blacklistElm.getTextContent());
            factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter);
        } catch (UnknownHostException e) {
            throw new IllegalArgumentException("Invalid IP address or subnet in the 'blacklist' element", e);
        }
    }

    Element remoteIpFilterElement = SpringUtil.getChildElement(element, FtpServerNamespaceHandler.FTPSERVER_NS,
            "remote-ip-filter");
    if (remoteIpFilterElement != null) {
        if (blacklistElm != null) {
            throw new FtpServerConfigurationException(
                    "Element 'remote-ip-filter' may not be used when 'blacklist' element is specified. ");
        }
        String filterType = remoteIpFilterElement.getAttribute("type");
        try {
            RemoteIpFilter remoteIpFilter = new RemoteIpFilter(IpFilterType.parse(filterType),
                    remoteIpFilterElement.getTextContent());
            factoryBuilder.addPropertyValue("sessionFilter", remoteIpFilter);
        } catch (UnknownHostException e) {
            throw new IllegalArgumentException(
                    "Invalid IP address or subnet in the 'remote-ip-filter' element");
        }
    }

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();

    String listenerFactoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, listenerFactoryName);
    registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(listenerFactoryName);
    builder.getRawBeanDefinition().setFactoryMethodName("createListener");
}

From source file:org.apache.ftpserver.config.spring.ServerBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from  w  w w.  j  a  v  a  2 s.  c o  m*/
 */
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(FtpServerFactory.class);

    List<Element> childs = SpringUtil.getChildElements(element);
    for (Element childElm : childs) {
        String childName = childElm.getLocalName();

        if ("listeners".equals(childName)) {
            Map<?, ?> listeners = parseListeners(childElm, parserContext, builder);

            if (listeners.size() > 0) {
                factoryBuilder.addPropertyValue("listeners", listeners);
            }
        } else if ("ftplets".equals(childName)) {
            Map<?, ?> ftplets = parseFtplets(childElm, parserContext, builder);
            factoryBuilder.addPropertyValue("ftplets", ftplets);
        } else if ("file-user-manager".equals(childName) || "db-user-manager".equals(childName)) {
            Object userManager = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("userManager", userManager);
        } else if ("user-manager".equals(childName)) {
            factoryBuilder.addPropertyValue("userManager",
                    SpringUtil.parseSpringChildElement(childElm, parserContext, builder));
        } else if ("native-filesystem".equals(childName)) {
            Object fileSystem = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("fileSystem", fileSystem);
        } else if ("filesystem".equals(childName)) {
            factoryBuilder.addPropertyValue("fileSystem",
                    SpringUtil.parseSpringChildElement(childElm, parserContext, builder));
        } else if ("commands".equals(childName)) {
            Object commandFactory = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("commandFactory", commandFactory);
        } else if ("messages".equals(childName)) {
            MessageResource mr = parseMessageResource(childElm, parserContext, builder);
            factoryBuilder.addPropertyValue("messageResource", mr);

        } else {
            throw new FtpServerConfigurationException("Unknown configuration name: " + childName);
        }
    }

    // Configure login limits
    ConnectionConfigFactory connectionConfig = new ConnectionConfigFactory();
    if (StringUtils.hasText(element.getAttribute("max-logins"))) {
        connectionConfig.setMaxLogins(SpringUtil.parseInt(element, "max-logins"));
    }
    if (StringUtils.hasText(element.getAttribute("max-threads"))) {
        connectionConfig.setMaxThreads(SpringUtil.parseInt(element, "max-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("max-anon-logins"))) {
        connectionConfig.setMaxAnonymousLogins(SpringUtil.parseInt(element, "max-anon-logins"));
    }
    if (StringUtils.hasText(element.getAttribute("anon-enabled"))) {
        connectionConfig.setAnonymousLoginEnabled(SpringUtil.parseBoolean(element, "anon-enabled", true));
    }
    if (StringUtils.hasText(element.getAttribute("max-login-failures"))) {
        connectionConfig.setMaxLoginFailures(SpringUtil.parseInt(element, "max-login-failures"));
    }
    if (StringUtils.hasText(element.getAttribute("login-failure-delay"))) {
        connectionConfig.setLoginFailureDelay(SpringUtil.parseInt(element, "login-failure-delay"));
    }

    factoryBuilder.addPropertyValue("connectionConfig", connectionConfig.createConnectionConfig());

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();

    String factoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryName);
    registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(factoryName);
    builder.getRawBeanDefinition().setFactoryMethodName("createServer");

}

From source file:org.apache.smscserver.config.spring.ServerBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from   w  w  w  . j av a 2s  .c o  m*/
 */
@Override
protected void doParse(final Element element, final ParserContext parserContext,
        final BeanDefinitionBuilder builder) {

    BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(SmscServerFactory.class);

    List<Element> childs = SpringUtil.getChildElements(element);
    for (Element childElm : childs) {
        String childName = childElm.getLocalName();

        if ("listeners".equals(childName)) {
            Map<?, ?> listeners = this.parseListeners(childElm, parserContext, builder);

            if (listeners.size() > 0) {
                factoryBuilder.addPropertyValue("listeners", listeners);
            }
        } else if ("smsclets".equals(childName)) {
            Map<?, ?> smsclets = this.parseSmsclets(childElm, parserContext, builder);
            factoryBuilder.addPropertyValue("smsclets", smsclets);
        } else if ("message-manager".equals(childName)) {
            Object userManager = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("messageManager", userManager);
        } else if ("file-user-manager".equals(childName) || "db-user-manager".equals(childName)) {
            Object userManager = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("userManager", userManager);
        } else if ("user-manager".equals(childName)) {
            factoryBuilder.addPropertyValue("userManager",
                    SpringUtil.parseSpringChildElement(childElm, parserContext, builder));
        } else if ("commands".equals(childName)) {
            Object commandFactory = parserContext.getDelegate().parseCustomElement(childElm,
                    builder.getBeanDefinition());
            factoryBuilder.addPropertyValue("commandFactory", commandFactory);
        } else {
            throw new SmscServerConfigurationException("Unknown configuration name: " + childName);
        }
    }

    // Configure the connection config
    ConnectionConfigFactory connectionConfig = new ConnectionConfigFactory();
    if (StringUtils.hasText(element.getAttribute("max-binds"))) {
        connectionConfig.setMaxBinds(SpringUtil.parseInt(element, "max-binds"));
    }
    if (StringUtils.hasText(element.getAttribute("min-threads"))) {
        connectionConfig.setMinThreads(SpringUtil.parseInt(element, "min-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("max-threads"))) {
        connectionConfig.setMaxThreads(SpringUtil.parseInt(element, "max-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("max-bind-failures"))) {
        connectionConfig.setMaxBindFailures(SpringUtil.parseInt(element, "max-bind-failures"));
    }
    if (StringUtils.hasText(element.getAttribute("bind-failure-delay"))) {
        connectionConfig.setBindFailureDelay(SpringUtil.parseInt(element, "bind-failure-delay"));
    }

    factoryBuilder.addPropertyValue("connectionConfig", connectionConfig.createConnectionConfig());

    // Configure the delivery manager
    DeliveryManagerConfigFactory deliveryManagerConfig = new DeliveryManagerConfigFactory();

    if (StringUtils.hasText(element.getAttribute("delivery-threads"))) {
        deliveryManagerConfig.setManagerThreads(SpringUtil.parseInt(element, "delivery-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("min-delivery-threads"))) {
        deliveryManagerConfig.setMinThreads(SpringUtil.parseInt(element, "min-delivery-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("max-delivery-threads"))) {
        deliveryManagerConfig.setMaxThreads(SpringUtil.parseInt(element, "max-delivery-threads"));
    }
    if (StringUtils.hasText(element.getAttribute("delivery-retry-periods"))) {
        deliveryManagerConfig.setDeliveryRetryPeriods(element.getAttribute("delivery-retry-periods"));
    }
    if (StringUtils.hasText(element.getAttribute("delivery-poll-time"))) {
        deliveryManagerConfig.setDeliveryPollTime(SpringUtil.parseInt(element, "delivery-poll-time"));
    }

    factoryBuilder.addPropertyValue("deliveryManagerConfig",
            deliveryManagerConfig.createDeliveryManagerConfig());

    if (StringUtils.hasText(element.getAttribute("sessionLockTimeout"))) {
        factoryBuilder.addPropertyValue("session-lock-timeout",
                SpringUtil.parseInt(element, "session-lock-timeout"));
    }

    BeanDefinition factoryDefinition = factoryBuilder.getBeanDefinition();

    String factoryName = parserContext.getReaderContext().generateBeanName(factoryDefinition);

    BeanDefinitionHolder factoryHolder = new BeanDefinitionHolder(factoryDefinition, factoryName);
    this.registerBeanDefinition(factoryHolder, parserContext.getRegistry());

    // set the factory on the listener bean
    builder.getRawBeanDefinition().setFactoryBeanName(factoryName);
    builder.getRawBeanDefinition().setFactoryMethodName("createServer");
}

From source file:org.apache.dubbo.config.spring.context.annotation.DubboConfigBindingRegistrar.java

private String resolveSingleBeanName(Map<String, String> properties,
        Class<? extends AbstractConfig> configClass, BeanDefinitionRegistry registry) {

    String beanName = properties.get("id");

    if (!StringUtils.hasText(beanName)) {
        BeanDefinitionBuilder builder = rootBeanDefinition(configClass);
        beanName = BeanDefinitionReaderUtils.generateBeanName(builder.getRawBeanDefinition(), registry);
    }/* www  .  j a v a2s .c o m*/

    return beanName;

}