Разбор списка элементов в конфигурации Mule - PullRequest
0 голосов
/ 03 августа 2011

Я создаю новый транспорт Mule для связи с DDS.Для обеспечения согласованности QoS соединителю необходимы «контроллеры потока».Может существовать ноль или более контроллеров потока.

XSD коннектора уже был изменен, чтобы разрешить следующее:

<connector>
  <flowController attr="1">
  <flowController attr="2">
</connector>

Легко читать один flowController с помощью ChildDefinitionParser, но этоне является адекватным.

ChildListEntryDefinitionParser возвращает список с правильным количеством элементов, но каждый элемент имеет значение null.

ChildListDefinitionParser не работает, если не расширен для предоставления установщиков для всех атрибутов.После этого я все еще получаю только первую запись.

Источник и документация не очень помогли.Заранее спасибо!

1 Ответ

0 голосов
/ 01 октября 2014

У меня был похожий вариант использования.ChildListEntryDefinitionParser работает нормально (протестировано с Mule ESB 3.4).Элементы списка будут установлены правильно.

mule-config.xml

<your:xpath-resolver-transformer>
   <your:expression xpath="//order/status" />
   <your:expression xpath="//order/type" />
</your:xpath-resolver-transformer>

YourNamespaceHandler

MessageProcessorDefinitionParser xpathResolver = new MessageProcessorDefinitionParser(XPathResolver.class);
xpathResolver.registerPreProcessor(new CheckExclusiveAttributesAndChildren(new String[]
{ "xpath" }, new String[]
{ "expression" }));
registerBeanDefinitionParser("expression", new ChildListEntryDefinitionParser("xpathExpression", "xpath"));
registerBeanDefinitionParser("xpath-resolver-transformer", xpathResolver);

Mule XSD (mule-your.xsd)

<xsd:element name="xpath-resolver-transformer" type="xpathResolverTransformerType" substitutionGroup="mule:abstract-transformer" />     
<xsd:complexType name="xpathResolverTransformerType">
    <xsd:complexContent>
        <xsd:extension base="mule:abstractTransformerType">
            <xsd:sequence>
                <xsd:element name="expression" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:attribute name="xpath" type="xsd:string" use="required"></xsd:attribute>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>
...