You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/05/05 08:39:40 UTC
svn commit: r771586 -
/myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
Author: matzew
Date: Tue May 5 06:39:39 2009
New Revision: 771586
URL: http://svn.apache.org/viewvc?rev=771586&view=rev
Log:
TRINIDAD-1466 - Support xinclude'd property metadata
Thanks for the patch, Andy Schwartz
Modified:
myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
Modified: myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java?rev=771586&r1=771585&r2=771586&view=diff
==============================================================================
--- myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java (original)
+++ myfaces/trinidad-maven/trunk/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java Tue May 5 06:39:39 2009
@@ -109,13 +109,7 @@
// faces-config/component/property
digester.addObjectCreate("faces-config/component/property", PropertyBean.class);
- digester.addBeanPropertySetter("faces-config/component/property/property-name",
- "propertyName");
- digester.addBeanPropertySetter("faces-config/component/property/property-class",
- "propertyClass");
- digester.addBeanPropertySetter("faces-config/component/property/description");
- digester.addBeanPropertySetter("faces-config/component/property/default-value",
- "defaultValue");
+ addComponentPropertyDigesterRules(digester);
digester.addSetNext("faces-config/component/property", "addProperty",
PropertyBean.class.getName());
@@ -205,6 +199,37 @@
digester.addSetNext("faces-config/component/component-extension/event", "addEvent",
EventRefBean.class.getName());
+ // jsr-276 metadata rules
+ digester.setRuleNamespaceURI("http://java.sun.com/xml/ns/javaee/faces/design-time-metadata");
+ digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/required");
+ digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/value-expression", "valueExpression");
+
+ // XInclude rules
+ digester.setRuleNamespaceURI(XIncludeFilter.XINCLUDE_NAMESPACE);
+ digester.addFactoryCreate("faces-config/component/include",
+ ComponentIncludeFactory.class);
+ digester.addFactoryCreate("faces-config/component/property/include",
+ ComponentPropertyIncludeFactory.class);
+ }
+
+ // Add component property-related digster rules
+ protected static void addComponentPropertyDigesterRules(Digester digester)
+ {
+ String oldNamespace = digester.getRuleNamespaceURI();
+
+ digester.setRuleNamespaceURI("http://java.sun.com/xml/ns/javaee");
+
+ digester.addBeanPropertySetter("faces-config/component/property/property-name",
+ "propertyName");
+ digester.addBeanPropertySetter("faces-config/component/property/property-class",
+ "propertyClass");
+ digester.addBeanPropertySetter("faces-config/component/property/description");
+ digester.addBeanPropertySetter("faces-config/component/property/default-value",
+ "defaultValue");
+
+ // Maven Faces Plugin
+ digester.setRuleNamespaceURI("http://myfaces.apache.org/maven-faces-plugin");
+
// faces-config/component/property/property-extension
digester.addBeanPropertySetter("faces-config/component/property/property-extension/state-holder",
"stateHolder");
@@ -252,15 +277,7 @@
digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/deprecated");
digester.addCallMethod("faces-config/component/property/property-extension/property-metadata/no-op", "makeNoOp");
- // jsr-276 metadata rules
- digester.setRuleNamespaceURI("http://java.sun.com/xml/ns/javaee/faces/design-time-metadata");
- digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/required");
- digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/value-expression", "valueExpression");
-
- // XInclude rules
- digester.setRuleNamespaceURI(XIncludeFilter.XINCLUDE_NAMESPACE);
- digester.addFactoryCreate("faces-config/component/include",
- ComponentIncludeFactory.class);
+ digester.setRuleNamespaceURI(oldNamespace);
}
protected static void addConverterDigesterRules(Digester digester)
@@ -456,7 +473,8 @@
return digester;
}
- static public class ComponentIncludeFactory extends AbstractObjectCreationFactory
+ // Base class for include factories
+ abstract static public class AbstractIncludeFactory extends AbstractObjectCreationFactory
{
public Object createObject(
Attributes attributes) throws Exception
@@ -469,7 +487,7 @@
URL included = new URL(master, href);
Digester includedDigester = createEmptyDigester();
- addComponentDigesterRules(includedDigester, false);
+ addDigesterRules(includedDigester);
includedDigester.push(included);
includedDigester.push(digester.peek());
@@ -481,5 +499,24 @@
// We don't really want the included object - but return it anyway
return included;
}
+
+ abstract public void addDigesterRules(Digester includedDigester);
}
+
+ // Factory for component includes
+ static public class ComponentIncludeFactory extends AbstractIncludeFactory
+ {
+ public void addDigesterRules(Digester digester) {
+ addComponentDigesterRules(digester, false);
+ }
+ }
+
+ // Factory for component property includes
+ static public class ComponentPropertyIncludeFactory extends AbstractIncludeFactory
+ {
+ public void addDigesterRules(Digester digester) {
+ addComponentPropertyDigesterRules(digester);
+ }
+ }
+
}