我正在构建一个新的Mule传输,以便与DDS进行通信。为了保持QoS一致,连接器需要“流量控制器”。可能存在零个或多个流量控制器。
连接器的XSD已经过修改,允许以下内容:
<connector>
<flowController attr="1">
<flowController attr="2">
</connector>
使用ChildDefinitionParser很容易读取单个flowController,但这还不够。
ChildListEntryDefinitionParser返回一个包含正确元素数的列表,但每个元素都为null。
除非为扩展提供所有属性的setter,否则ChildListDefinitionParser不起作用。这样做之后,我仍然只得到第一个条目。
源和文档并没有非常有用。提前谢谢!
答案 0 :(得分:0)
我有一个类似的用例。 ChildListEntryDefinitionParser工作正常(使用Mule ESB 3.4测试)。列表元素将正确设置。
<强>骡-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>