TRINIDAD-2137 Improve Trinidad component and tagdoc generation plugin to handle deprecated classes
Thanks to Dave Robinson for the patch.
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
index 5578b6a..34c07f1 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/component/AbstractComponentGenerator.java
@@ -120,9 +120,19 @@
out.println(" * <p>");
out.println(" * It does not support any children.");
}
-
+
+ String deprecatedMessage = component.getDeprecated();
+ if (deprecatedMessage != null)
+ {
+ out.println(" * @deprecated " + convertMultilineComment(deprecatedMessage));
+ }
out.println(" */");
+ if (deprecatedMessage != null)
+ {
+ out.println("@Deprecated");
+ }
+
// TODO: eliminate <mfp:component-class-modifier> metadata
int modifiers = component.getComponentClassModifiers();
String classStart = Modifier.toString(modifiers);
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/AbstractTagBean.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/AbstractTagBean.java
index 7df387b..13217c7 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/AbstractTagBean.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/AbstractTagBean.java
@@ -30,6 +30,7 @@
private List<String> _accessibilityGuidelines = new ArrayList<String>();
private String _description;
private String _longDescription;
+ private String _deprecated;
private QName _tagName;
private String _tagClass;
protected Map<String, PropertyBean> _properties;
@@ -101,6 +102,23 @@
}
/**
+ * Sets the component deprecated flag
+ * @param deprecated
+ */
+ public void setDeprecated(String deprecated)
+ {
+ this._deprecated = deprecated;
+ }
+
+ /**
+ * Value is provided through the deprecated extended property metadata.
+ * @return deprecated description if the component should be deprecated
+ */
+ public String getDeprecated() {
+ return _deprecated;
+ }
+
+ /**
* Sets the JSP tag handler class for this component.
*
* @param tagClass the JSP tag handler class
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
index 0dee4c0..ec9dbcc 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/parse/FacesConfigParser.java
@@ -226,6 +226,9 @@
digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/required");
digester.addBeanPropertySetter("faces-config/component/property/property-extension/property-metadata/value-expression", "valueExpression");
+ // faces-config/component/component-extension/component-metadata/deprecated
+ digester.addBeanPropertySetter("faces-config/component/component-extension/component-metadata/deprecated");
+
// faces-config/component/facet/facet-extension/facet-metadata/allowed-child-components
digester.addCallMethod("faces-config/component/facet/facet-extension/facet-metadata/allowed-child-components",
"parseAllowedChildComponents", 1);
diff --git a/maven-faces-plugin/src/test/resources/META-INF/maven-faces-plugin/components/trinidad/faces/Command.xml b/maven-faces-plugin/src/test/resources/META-INF/maven-faces-plugin/components/trinidad/faces/Command.xml
index 6bfc9ca..b0fec24 100644
--- a/maven-faces-plugin/src/test/resources/META-INF/maven-faces-plugin/components/trinidad/faces/Command.xml
+++ b/maven-faces-plugin/src/test/resources/META-INF/maven-faces-plugin/components/trinidad/faces/Command.xml
@@ -22,7 +22,8 @@
xmlns:af="http://myfaces.apache.org/trinidad"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:md="http://myfaces.apache.org/bali/xml/metadata"
- xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin" >
+ xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+ xmlns:fmd="http://java.sun.com/xml/ns/javaee/faces/design-time-metadata">
<component>
@@ -152,6 +153,10 @@
<mfp:jsp-tag-class>org.apache.myfaces.trinidadinternal.taglib.UIXCommandTag</mfp:jsp-tag-class>
<mfp:jsp-tag-name>af:command</mfp:jsp-tag-name>
+
+ <fmd:component-metadata>
+ <fmd:deprecated>The imaginary component has been deprecated. Use the real component instead.</fmd:deprecated>
+ </fmd:component-metadata>
<!-- <mfp:implementation-type>trinidad</mfp:implementation-type> -->
diff --git a/maven-tagdoc-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/tagdoc/TagdocReport.java b/maven-tagdoc-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/tagdoc/TagdocReport.java
index 90de6c5..bbd226c 100644
--- a/maven-tagdoc-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/tagdoc/TagdocReport.java
+++ b/maven-tagdoc-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/tagdoc/TagdocReport.java
@@ -755,6 +755,15 @@
out.write("</table>\n");
out.write("</div>\n");
+
+ String deprecatedMessage = bean.getDeprecated();
+ if (deprecatedMessage != null)
+ {
+ out.write("\n");
+ out.write("<b>DEPRECATED: </b>");
+ out.write(_preToSource(deprecatedMessage));
+ out.write("\n");
+ }
String doc = bean.getLongDescription();
if (doc == null)