Exemple #1
0
 // @Override
 public BeanDefinitionBuilder createBeanDefinitionBuilder(Element element, Class beanClass) {
   BeanDefinitionBuilder builder = super.createBeanDefinitionBuilder(element, beanClass);
   String global = element.getAttribute(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF);
   if (StringUtils.isNotBlank(global)) {
     builder.addConstructorArgReference(global);
     builder.addDependsOn(global);
   }
   return builder;
 }
 protected void addDependsOn(CamelContextFactoryBean factoryBean, BeanDefinitionBuilder builder) {
   String dependsOn = factoryBean.getDependsOn();
   if (ObjectHelper.isNotEmpty(dependsOn)) {
     // comma, whitespace and semi colon is valid separators in Spring depends-on
     String[] depends = dependsOn.split(",|;|\\s");
     if (depends == null) {
       throw new IllegalArgumentException("Cannot separate depends-on, was: " + dependsOn);
     } else {
       for (String depend : depends) {
         depend = depend.trim();
         LOG.debug("Adding dependsOn {} to CamelContext({})", depend, factoryBean.getId());
         builder.addDependsOn(depend);
       }
     }
   }
 }
    public void handle(Element element) {
      handleCommonBeanAttributes(element, builder, parserContext);
      final NamedNodeMap attrs = element.getAttributes();
      if (attrs != null) {
        Node instanceRefNode = attrs.getNamedItem("instance-ref");
        if (instanceRefNode == null) {
          throw new IllegalStateException(
              "'instance-ref' attribute is required for creating" + " Hazelcast " + type);
        }
        final String instanceRef = getValue(instanceRefNode);
        builder.getRawBeanDefinition().setFactoryBeanName(instanceRef);
        builder.addDependsOn(instanceRef);

        Node nameNode = attrs.getNamedItem("name");
        if (nameNode == null) {
          nameNode = attrs.getNamedItem("id");
        }
        builder.addConstructorArgValue(getValue(nameNode));
      }
    }
  @Override
  protected void doParse(Element element, ParserContext ctx, BeanDefinitionBuilder bean) {
    boolean isAbstract = false;
    boolean publish = true;
    NamedNodeMap atts = element.getAttributes();
    String bus = element.getAttribute("bus");
    if (StringUtils.isEmpty(bus)) {
      addBusWiringAttribute(bean, BusWiringType.CONSTRUCTOR);
    } else {
      bean.addConstructorArgReference(bus);
    }
    for (int i = 0; i < atts.getLength(); i++) {
      Attr node = (Attr) atts.item(i);
      String val = node.getValue();
      String pre = node.getPrefix();
      String name = node.getLocalName();

      if ("createdFromAPI".equals(name)) {
        bean.setAbstract(true);
        isAbstract = true;
      } else if (isAttribute(pre, name) && !"publish".equals(name) && !"bus".equals(name)) {
        if ("endpointName".equals(name) || "serviceName".equals(name)) {
          QName q = parseQName(element, val);
          bean.addPropertyValue(name, q);
        } else if ("depends-on".equals(name)) {
          bean.addDependsOn(val);
        } else if (IMPLEMENTOR.equals(name)) {
          loadImplementor(bean, val);
        } else if (!"name".equals(name)) {
          mapToProperty(bean, name, val);
        }
      } else if ("abstract".equals(name)) {
        bean.setAbstract(true);
        isAbstract = true;
      } else if ("publish".equals(name)) {
        publish = "true".equals(val);
      }
    }

    Element elem = DOMUtils.getFirstElement(element);
    while (elem != null) {
      String name = elem.getLocalName();
      if ("properties".equals(name)) {
        Map<?, ?> map = ctx.getDelegate().parseMapElement(elem, bean.getBeanDefinition());
        bean.addPropertyValue("properties", map);
      } else if ("binding".equals(name)) {
        setFirstChildAsProperty(elem, ctx, bean, "bindingConfig");
      } else if ("inInterceptors".equals(name)
          || "inFaultInterceptors".equals(name)
          || "outInterceptors".equals(name)
          || "outFaultInterceptors".equals(name)
          || "features".equals(name)
          || "schemaLocations".equals(name)
          || "handlers".equals(name)) {
        List<?> list = ctx.getDelegate().parseListElement(elem, bean.getBeanDefinition());
        bean.addPropertyValue(name, list);
      } else if (IMPLEMENTOR.equals(name)) {
        ctx.getDelegate().parseConstructorArgElement(elem, bean.getBeanDefinition());
      } else {
        setFirstChildAsProperty(elem, ctx, bean, name);
      }
      elem = DOMUtils.getNextElement(elem);
    }
    if (!isAbstract) {
      if (publish) {
        bean.setInitMethodName("publish");
      }
      bean.setDestroyMethodName("stop");
    }
    // We don't want to delay the registration of our Server
    bean.setLazyInit(false);
  }