0

我正在构建一个新的 Mule 传输以允许与 DDS 通信。为了保持 QoS 一致,连接器需要“流控制器”。可能存在零个或多个流量控制器。

连接器的 XSD 已修改为允许以下内容:

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

使用 ChildDefinitionParser 很容易读取单个 flowController,但这还不够。

ChildListEntryDefinitionParser 返回一个包含正确数量元素的列表,但每个元素都是空的。

ChildListDefinitionParser 除非扩展为所有属性提供设置器,否则不起作用。这样做之后,我仍然只得到第一个条目。

源代码和文档并没有太大帮助。提前致谢!

4

1 回答 1

0

我有一个类似的用例。ChildListEntryDefinitionParser 工作正常(使用 Mule ESB 3.4 测试)。列表元素将正确设置。

骡子配置.xml

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

你的命名空间处理程序

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);

骡子 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>
于 2014-09-30T23:19:51.417 回答