Example usage for org.springframework.beans.factory.xml ParserContext getRegistry

List of usage examples for org.springframework.beans.factory.xml ParserContext getRegistry

Introduction

In this page you can find the example usage for org.springframework.beans.factory.xml ParserContext getRegistry.

Prototype

public final BeanDefinitionRegistry getRegistry() 

Source Link

Usage

From source file:org.bigtester.ate.xmlschema.ElementStepBeanDefinitionParser.java

/**
 * {@inheritDoc}//from www  . j a  v  a  2  s  .c o m
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {

    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw GlobalUtils.createNotInitializedException("element and parserContext");
    // Here we parse the Spring elements such as < property>
    //      BeanDefinitionHolder holder = parserContext.getDelegate()
    //            .parseBeanDefinitionElement(element);
    BeanDefinition bDef = super.parseInternal(element, parserContext);
    bDef.setBeanClassName(ElementTestStep.class.getName());

    //      String pageObject = element
    //            .getAttribute(XsdElementConstants.ATTR_BASETESTSTEP_PAGEOBJECT);
    //      if (StringUtils.hasText(pageObject)) {
    //         bDef.getConstructorArgumentValues().addGenericArgumentValue(
    //               new RuntimeBeanReference(pageObject));
    //      }
    //      String myWE = element
    //            .getAttribute(XsdElementConstants.ATTR_ELEMENTSTEP_MYWEBELEMENT);
    //      if (StringUtils.hasText(myWE)) {
    //         bDef.getConstructorArgumentValues().addGenericArgumentValue(
    //               new RuntimeBeanReference(myWE));
    //      }
    //      String ead = element
    //            .getAttribute(XsdElementConstants.ATTR_ELEMENTSTEP_ELEMENTACTIONDEF);
    //      if (StringUtils.hasText(ead)) {
    //         bDef.getConstructorArgumentValues().addGenericArgumentValue(
    //               new RuntimeBeanReference(ead));
    //      }
    //      
    //      
    //      boolean target = Boolean.parseBoolean(element
    //            .getAttribute(XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP));
    //      bDef.getPropertyValues().addPropertyValue(
    //            XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP, target);
    //
    //      String stepName = element
    //            .getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPNAME);
    //      bDef.getPropertyValues().addPropertyValue(
    //            XsdElementConstants.ATTR_TESTSTEP_STEPNAME, stepName);
    //
    //      String stepDesc = element
    //            .getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION);
    //      bDef.getPropertyValues().addPropertyValue(
    //            XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION, stepDesc);

    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

    // this will never be null since the schema explicitly requires that a
    // value be supplied
    // String myWE =
    // element.getAttribute(XsdElementConstants.ATTR_ELEMENTSTEP_MYWEBELEMENT);
    // BeanDefinitionBuilder factory =
    // BeanDefinitionBuilder.rootBeanDefinition(ElementTestStep.class);
    // if (StringUtils.hasText(myWE))
    // factory.addConstructorArgReference(myWE);
    //
    // boolean target =
    // Boolean.parseBoolean(element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP));
    // factory.addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP,
    // target);
    //
    // String stepName =
    // element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPNAME);
    // if (StringUtils.hasText(stepName))
    // factory.addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_STEPNAME,
    // stepName);
    //
    // String stepDesc =
    // element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION);
    // if (StringUtils.hasText(stepDesc))
    // factory.addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION,
    // stepDesc);
    //
    // factory.getBeanDefinition().setBeanClassName(ElementTestStep.class.getName());
    // parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"),
    // factory.getBeanDefinition());
    // return factory.getBeanDefinition();
}

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

protected String parseCustom(ParserContext context, Element element, BeanDefinition containingBean) {
    String name = getName(context, element);
    String ref = element.getAttribute(REF_ATTR);

    String customBeanId = null;/*from   w  w  w .j av a  2  s . co  m*/
    if (StringUtils.hasLength(ref)) {
        customBeanId = ref;
    } else {
        // Grab the single child element, that should define or point
        // to the custom Accumulator or Calcuation bean definition.
        NodeList childList = element.getChildNodes();
        Element child = null;
        for (int i = 0; i < childList.getLength(); i++) {
            Node childNode = childList.item(i);
            if (!(childNode instanceof Element)) {
                continue;
            }

            if (child != null) {
                context.getReaderContext()
                        .error("'custom' elements without a 'ref' attribute must "
                                + "have exactly one 'bean', 'ref', or 'idref' child" + " element.",
                                context.extractSource(element));
            }
            child = (Element) childNode;
        }

        if (child == null) {
            context.getReaderContext()
                    .error("'custom' elements must specify a 'ref' attribute or a "
                            + "single 'bean', 'ref', or 'idref' child element.",
                            context.extractSource(element));
        }

        // Parse the contents of the custom bean
        Object o = context.getDelegate().parsePropertySubElement(child, containingBean);

        if (o instanceof BeanDefinitionHolder) {
            BeanDefinitionHolder bdh = (BeanDefinitionHolder) o;
            customBeanId = bdh.getBeanName();
            if (!StringUtils.hasLength(customBeanId)) {
                // They didn't give their bean an id, so we'll need to
                // generate one for it now.
                customBeanId = context.getReaderContext().generateBeanName(bdh.getBeanDefinition());
            }

            // Register this bean
            context.getRegistry().registerBeanDefinition(customBeanId, bdh.getBeanDefinition());
        } else if (o instanceof RuntimeBeanReference) {
            RuntimeBeanReference rbr = (RuntimeBeanReference) o;
            customBeanId = rbr.getBeanName();
        } else if (o instanceof RuntimeBeanNameReference) {
            RuntimeBeanNameReference rbnr = (RuntimeBeanNameReference) o;
            customBeanId = rbnr.getBeanName();
        }
    }

    // Create proxy that associates the given name with this child
    BeanDefinitionBuilder accProxyBdb = getBdb(RegistryNodeChildProxy.class);
    accProxyBdb.addPropertyValue(NAME_ATTR, name);
    accProxyBdb.addPropertyValue(CHILD_ATTR, customBeanId);
    accProxyBdb.getRawBeanDefinition().setSource(element);

    return context.getReaderContext().registerWithGeneratedName(accProxyBdb.getBeanDefinition());
}

From source file:nats.client.spring.config.NatsBeanDefinitionParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    final BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(NatsFactoryBean.class);

    // Parse list of hosts
    final List<String> uris = new ManagedList<>();
    final List<Element> hosts = DomUtils.getChildElementsByTagName(element, ELEMENT_URL);
    for (Element host : hosts) {
        uris.add(host.getTextContent());
    }/*from   ww w. j  a  v  a  2  s . co  m*/
    builder.addPropertyValue("hostUris", uris);

    // Parse list of subscriptions
    final List<BeanDefinition> subscriptions = new ManagedList<>();
    final List<Element> subscriptionElements = DomUtils.getChildElementsByTagName(element,
            ELEMENT_SUBSCRIPTION);
    for (Element subscriptionElement : subscriptionElements) {
        final BeanDefinitionBuilder subscriptionBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(SubscriptionConfig.class);
        subscriptionBuilder.addConstructorArgValue(subscriptionElement.getAttribute(ATTRIBUTE_SUBJECT));
        subscriptionBuilder.addConstructorArgReference(subscriptionElement.getAttribute(ATTRIBUTE_REF));
        subscriptionBuilder.addConstructorArgValue(subscriptionElement.getAttribute(ATTRIBUTE_METHOD));
        subscriptionBuilder.addConstructorArgValue(subscriptionElement.getAttribute(ATTRIBUTE_QUEUE_GROUP));
        subscriptions.add(subscriptionBuilder.getBeanDefinition());
    }
    builder.addPropertyValue("subscriptions", subscriptions);

    // Parse attributes
    builder.addPropertyValue("autoReconnect", element.getAttribute(ATTRIBUTE_AUTO_RECONNECT));
    builder.addPropertyValue("reconnectWaitTime", element.getAttribute(ATTRIBUTE_RECONNECT_WAIT_TIME));
    final String eventLoopGroupRef = element.getAttribute(ATTRIBUTE_EVENT_LOOP_GROUP_REF);
    if (StringUtils.hasText(eventLoopGroupRef)) {
        builder.addPropertyReference("eventLoopGroup", eventLoopGroupRef);
    }
    final String callbackExecutorRef = element.getAttribute(ATTRIBUTE_CALLBACK_EXECUTOR_REF);
    if (StringUtils.hasText(callbackExecutorRef)) {
        builder.addPropertyReference("callbackExecutor", callbackExecutorRef);
    }
    final String connectionStateListenerRef = element.getAttribute(ATTRIBUTE_CONNECTION_STATE_LISTENER_REF);
    if (StringUtils.hasText(connectionStateListenerRef)) {
        builder.addPropertyReference("connectionStateListener", connectionStateListenerRef);
    }

    // Register bean
    final String id = element.getAttribute(ATTRIBUTE_ID);

    final AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();
    parserContext.getRegistry().registerBeanDefinition(id, beanDefinition);

    return beanDefinition;
}

From source file:org.bigtester.ate.xmlschema.BaseTestStepBeanDefinitionParser.java

/**
 * {@inheritDoc}// w w w. ja  v a  2  s . co m
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw GlobalUtils.createNotInitializedException("element and parserContext");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(BaseTestStep.class.getName());
    String pageObject = element.getAttribute(XsdElementConstants.ATTR_BASETESTSTEP_PAGEOBJECT);
    if (StringUtils.hasText(pageObject)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(pageObject));
    }
    String myWebElement = element.getAttribute(XsdElementConstants.ATTR_BASETESTSTEP_MYWEBELEMENT);
    if (StringUtils.hasText(myWebElement)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(myWebElement));
    }

    String ead = element.getAttribute(XsdElementConstants.ATTR_ELEMENTSTEP_ELEMENTACTIONDEF);
    if (StringUtils.hasText(ead)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(ead));
    }

    boolean target = Boolean.parseBoolean(element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP));
    bDef.getPropertyValues().addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_TARGETSTEP, target);

    boolean optional;

    if (target) {
        optional = false;
    } else {
        optional = Boolean.parseBoolean(element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_OPTIONALSTEP));
        String optionalStepUntilInclusive = element
                .getAttribute(XsdElementConstants.ATTR_TESTSTEP_CORRELATEDOPTIONALSTEPSUTILINCLUSIVE);
        bDef.getPropertyValues().addPropertyValue(
                XsdElementConstants.ATTR_TESTSTEP_CORRELATEDOPTIONALSTEPSUTILINCLUSIVE,
                optionalStepUntilInclusive);
    }
    bDef.getPropertyValues().addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_OPTIONALSTEP, optional);

    String stepName = element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPNAME);
    bDef.getPropertyValues().addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_STEPNAME, stepName);

    String stepDesc = element.getAttribute(XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION);
    bDef.getPropertyValues().addPropertyValue(XsdElementConstants.ATTR_TESTSTEP_STEPDESCRIPTION, stepDesc);

    bDef.getPropertyValues().addPropertyValue("repeatStepLogger",
            new RuntimeBeanReference(GlobalConstants.BEAN_ID_REPEATSTEPEXECUTIONLOGGER));

    String testcaseParentName = element.getParentNode().getAttributes().getNamedItem("id").getNodeValue();
    bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(testcaseParentName));
    //        String text = element.getAttribute("text");
    //        bd.getPropertyValues().addPropertyValue("text", text);
    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

}

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

/**
 * {@inheritDoc}//from   w ww  . j  a v a2 s.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 ww.  j a v a 2s.  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 w w. ja v  a  2 s .  co m
    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:fr.pilato.spring.elasticsearch.xml.ClientBeanDefinitionParser.java

public BeanDefinition parse(Element element, ParserContext parserContext) {
    // When node is not null, we should build a client.
    // When node is null, we want to build a transport client.

    String id = XMLParserUtil.getElementStringValue(element, "id");
    String name = XMLParserUtil.getElementStringValue(element, "name");

    String node = XMLParserUtil.getElementStringValue(element, "node");
    String esNodes = XMLParserUtil.getElementStringValue(element, "esNodes");

    String settingsFile = XMLParserUtil.getElementStringValue(element, "settingsFile");
    String properties = XMLParserUtil.getElementStringValue(element, "properties");

    boolean forceMapping = XMLParserUtil.getElementBooleanValue(element, "forceMapping");
    boolean forceTemplate = XMLParserUtil.getElementBooleanValue(element, "forceTemplate");
    boolean mergeMapping = XMLParserUtil.getElementBooleanValue(element, "mergeMapping");
    boolean mergeSettings = XMLParserUtil.getElementBooleanValue(element, "mergeSettings");
    boolean autoscan = XMLParserUtil.getElementBooleanValue(element, "autoscan", true);

    String classpathRoot = XMLParserUtil.getElementStringValue(element, "classpathRoot");
    String mappings = XMLParserUtil.getElementStringValue(element, "mappings");
    String aliases = XMLParserUtil.getElementStringValue(element, "aliases");
    String templates = XMLParserUtil.getElementStringValue(element, "templates");

    String taskExecutor = XMLParserUtil.getElementStringValue(element, "taskExecutor");
    String async = XMLParserUtil.getElementStringValue(element, "async");

    // Checking bean definition
    boolean isClientNode = (node != null && node.length() > 0);
    boolean isEsNodesEmpty = (esNodes == null || esNodes.length() == 0);

    if (isClientNode && !isEsNodesEmpty) {
        throw new RuntimeException("Incorrect settings. You should not set esNodes when using a client node.");
    }/*from ww  w  .ja va2  s .  c o  m*/

    if (!isClientNode && isEsNodesEmpty) {
        throw new RuntimeException(
                "Incorrect settings. You must set esNodes when creating a transport client.");
    }

    BeanDefinition client;

    GenericBeanDefinition bdef = new GenericBeanDefinition();
    if (isClientNode) {
        bdef.setBeanClass(ElasticsearchClientFactoryBean.class);
        BeanDefinitionBuilder clientBuilder = startClientBuilder(ElasticsearchClientFactoryBean.class,
                settingsFile, properties, forceMapping, forceTemplate, mergeMapping, mergeSettings, autoscan,
                classpathRoot, mappings, aliases, templates, async, taskExecutor);
        client = ClientBeanDefinitionParser.buildClientDef(clientBuilder, node);
    } else {
        bdef.setBeanClass(ElasticsearchTransportClientFactoryBean.class);
        BeanDefinitionBuilder clientBuilder = startClientBuilder(ElasticsearchTransportClientFactoryBean.class,
                settingsFile, properties, forceMapping, forceTemplate, mergeMapping, mergeSettings, autoscan,
                classpathRoot, mappings, aliases, templates, async, taskExecutor);
        client = ClientBeanDefinitionParser.buildTransportClientDef(clientBuilder, esNodes);
    }

    // Register NodeBeanDefinition
    if (id != null && id.length() > 0) {
        parserContext.getRegistry().registerBeanDefinition(id, client);
    } else {
        parserContext.getRegistry().registerBeanDefinition(name, client);
    }

    return bdef;
}

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

/**
 * {@inheritDoc}/*from  ww  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(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.jboss.seam.spring.namespace.CdiBeanImportBeanDefinitionParser.java

@Override
public AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
    BeanDefinitionBuilder cdiBeanFactoryBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(FACTORY_BEAN_CLASS_NAME);
    String beanManagerReference = element.getAttribute(BEAN_MANAGER_REFERENCE);
    if (StringUtils.hasText(beanManagerReference)) {
        cdiBeanFactoryBuilder.addPropertyReference("beanManager", beanManagerReference);
    } else {/*w  w  w .  j  av  a2 s  .c  o m*/
        cdiBeanFactoryBuilder.addPropertyReference("beanManager", DEFAULT_BEAN_MANAGER_ID);
    }

    String name = element.getAttribute(NAME_ATTRIBUTE);

    String type = element.getAttribute("type");

    if (!StringUtils.hasText(name) && !StringUtils.hasText(type)) {
        parserContext.getReaderContext()
                .error("A CDI bean reference must specify at least a name or the bean type", element);
    }

    ArrayList<Qualifier> qualifiers = new ArrayList<Qualifier>();

    NodeList children = element.getChildNodes();
    for (int i = 0; i < children.getLength(); i++) {
        Node childNode = children.item(i);
        if (childNode.getNodeType() == Node.ELEMENT_NODE && "qualifier".equals(childNode.getLocalName())) {
            Element qualifierElement = (Element) childNode;
            Qualifier qualifier = new Qualifier();
            Map<String, Object> attributes = new HashMap<String, Object>();
            qualifier.setClassName(qualifierElement.getAttribute("type"));

            if (qualifierElement.hasChildNodes()) {
                NodeList attributeNodes = qualifierElement.getChildNodes();
                for (int j = 0; j < attributeNodes.getLength(); j++) {
                    Node attributeNode = attributeNodes.item(j);
                    if (attributeNode.getNodeType() == Node.ELEMENT_NODE
                            && "attribute".equals(attributeNode.getLocalName())) {
                        Element attributeElement = (Element) attributeNode;
                        String attributeName = attributeElement.getAttribute("name");
                        String attributeValue = attributeElement.getAttribute("value");
                        if (!StringUtils.hasText(attributeName) || !StringUtils.hasText(attributeValue)) {
                            parserContext.getReaderContext().error(
                                    "Qualifier attributes must have both a name and a value", attributeElement);
                        }
                        attributes.put(attributeName, attributeValue);
                    }
                }
            }
            qualifier.setAttributes(attributes);
            qualifiers.add(qualifier);
        }
    }
    if (StringUtils.hasText(name) && !qualifiers.isEmpty()) {
        parserContext.getReaderContext()
                .error("A bean reference must either specify a name or qualifiers but not both", element);
    }

    BeanDefinitionBuilder lookupBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(TYPE_SAFE_BEAN_LOOKUP_CLASS_NAME);
    lookupBuilder.addConstructorArgValue(type);
    lookupBuilder.addPropertyValue("qualifiers", qualifiers);
    AbstractBeanDefinition lookupBeanDefinition = lookupBuilder.getBeanDefinition();
    String lookupBeanName = parserContext.getReaderContext().generateBeanName(lookupBeanDefinition);
    BeanDefinitionReaderUtils.registerBeanDefinition(
            new BeanDefinitionHolder(lookupBeanDefinition, lookupBeanName), parserContext.getRegistry());
    cdiBeanFactoryBuilder.addPropertyReference("cdiBeanLookup", lookupBeanName);

    return cdiBeanFactoryBuilder.getBeanDefinition();
}