Support xinclude'd property metadata
------------------------------------
Key: TRINIDAD-1466
URL: https://issues.apache.org/jira/browse/TRINIDAD-1466
Project: MyFaces Trinidad
Issue Type: Improvement
Components: Build
Reporter: Andy Schwartz
Priority: Minor
Currently the Trinidad plugins support the use of xinclude to pull in component
metadata. For example, looking at CoreCommandButton.xml, I see:
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:tr="http://myfaces.apache.org/trinidad"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<component>
<!-- Snip -->
<xi:include href="includes/CommonAttrs.xml"
xpointer="/faces-config/component/*"/>
<xi:include href="includes/CoreJSEvents.xml"
xpointer="/faces-config/component/*"/>
<xi:include href="includes/LaunchSource.xml"
xpointer="/faces-config/component/*"/>
<!-- Snip -->
</faces-config.xml>
This pulls in component properties from various external sources, making it
possible to share component metadata across components.
I have a case where I would like to include property-specific metadata, eg:
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:tr="http://myfaces.apache.org/trinidad"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<component>
<property>
<property-name>Foo</property-name>
<xi:include href="includes/CommonFoo.xml"
xpointer="/faces-config/component/property/*"/>
</property>
</faces-config.xml>
The goal is to define property metadata once and then include this into various
property definitions that share common metadata.
However, this does not currently work. The issue is that FacesConfigParser.
addComponentDigesterRules() only provides support for includes that appear
within faces-config/component elements:
// XInclude rules
digester.setRuleNamespaceURI(XIncludeFilter.XINCLUDE_NAMESPACE);
digester.addFactoryCreate("faces-config/component/include",
ComponentIncludeFactory.class);
Includes underneath faces-config/component/property elements are ignored. This
prevents sharing of metadata across property definitions.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.