You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/01/07 06:18:56 UTC

svn commit: r493648 [1/11] - in /struts/struts2/trunk/core: ./ src/main/java/org/apache/struts2/components/ src/main/java/org/apache/struts2/components/table/ src/main/resources/META-INF/ src/site/ src/site/resources/ src/site/resources/tags/

Author: mrdon
Date: Sat Jan  6 21:18:49 2007
New Revision: 493648

URL: http://svn.apache.org/viewvc?view=rev&rev=493648
Log:
Moving tag docs to Java 5 annotations and APT, storing generated html
in src/site/resources for possible use in site
WW-1392

Added:
    struts/struts2/trunk/core/src/site/
    struts/struts2/trunk/core/src/site/resources/
    struts/struts2/trunk/core/src/site/resources/tags/
    struts/struts2/trunk/core/src/site/resources/tags/a.html
    struts/struts2/trunk/core/src/site/resources/tags/action.html
    struts/struts2/trunk/core/src/site/resources/tags/actionerror.html
    struts/struts2/trunk/core/src/site/resources/tags/actionmessage.html
    struts/struts2/trunk/core/src/site/resources/tags/append.html
    struts/struts2/trunk/core/src/site/resources/tags/autocompleter.html
    struts/struts2/trunk/core/src/site/resources/tags/checkbox.html
    struts/struts2/trunk/core/src/site/resources/tags/checkboxlist.html
    struts/struts2/trunk/core/src/site/resources/tags/combobox.html
    struts/struts2/trunk/core/src/site/resources/tags/component.html
    struts/struts2/trunk/core/src/site/resources/tags/date.html
    struts/struts2/trunk/core/src/site/resources/tags/datepicker.html
    struts/struts2/trunk/core/src/site/resources/tags/div.html
    struts/struts2/trunk/core/src/site/resources/tags/doubleselect.html
    struts/struts2/trunk/core/src/site/resources/tags/dropdowndatetimepicker.html
    struts/struts2/trunk/core/src/site/resources/tags/else.html
    struts/struts2/trunk/core/src/site/resources/tags/elseif.html
    struts/struts2/trunk/core/src/site/resources/tags/fielderror.html
    struts/struts2/trunk/core/src/site/resources/tags/file.html
    struts/struts2/trunk/core/src/site/resources/tags/form.html
    struts/struts2/trunk/core/src/site/resources/tags/head.html
    struts/struts2/trunk/core/src/site/resources/tags/hidden.html
    struts/struts2/trunk/core/src/site/resources/tags/i18n.html
    struts/struts2/trunk/core/src/site/resources/tags/if.html
    struts/struts2/trunk/core/src/site/resources/tags/include.html
    struts/struts2/trunk/core/src/site/resources/tags/iterator.html
    struts/struts2/trunk/core/src/site/resources/tags/label.html
    struts/struts2/trunk/core/src/site/resources/tags/merge.html
    struts/struts2/trunk/core/src/site/resources/tags/optgroup.html
    struts/struts2/trunk/core/src/site/resources/tags/optiontransferselect.html
    struts/struts2/trunk/core/src/site/resources/tags/param.html
    struts/struts2/trunk/core/src/site/resources/tags/password.html
    struts/struts2/trunk/core/src/site/resources/tags/property.html
    struts/struts2/trunk/core/src/site/resources/tags/push.html
    struts/struts2/trunk/core/src/site/resources/tags/radio.html
    struts/struts2/trunk/core/src/site/resources/tags/reset.html
    struts/struts2/trunk/core/src/site/resources/tags/select.html
    struts/struts2/trunk/core/src/site/resources/tags/set.html
    struts/struts2/trunk/core/src/site/resources/tags/submit.html
    struts/struts2/trunk/core/src/site/resources/tags/tabbedPanel.html
    struts/struts2/trunk/core/src/site/resources/tags/table.html
    struts/struts2/trunk/core/src/site/resources/tags/text.html
    struts/struts2/trunk/core/src/site/resources/tags/textarea.html
    struts/struts2/trunk/core/src/site/resources/tags/textfield.html
    struts/struts2/trunk/core/src/site/resources/tags/token.html
    struts/struts2/trunk/core/src/site/resources/tags/tree.html
    struts/struts2/trunk/core/src/site/resources/tags/treenode.html
    struts/struts2/trunk/core/src/site/resources/tags/url.html
Modified:
    struts/struts2/trunk/core/pom.xml
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionMessage.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AppendIterator.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Autocompleter.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Bean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/CheckboxList.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ComboBox.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DatePicker.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Else.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ElseIf.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FieldError.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/GenericUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Head.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Hidden.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/I18n.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/If.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Include.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/IteratorComponent.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Label.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ListUIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/MergeIterator.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptGroup.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/OptionTransferSelect.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Param.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Password.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Property.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Push.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Radio.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/RemoteUICallBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Reset.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Select.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Set.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Submit.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TabbedPanel.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Text.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextArea.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TextField.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TimePicker.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Token.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Tree.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/TreeNode.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UIBean.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/URL.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/UpDownSelect.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/table/WebTable.java
    struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld

Modified: struts/struts2/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/pom.xml?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/pom.xml (original)
+++ struts/struts2/trunk/core/pom.xml Sat Jan  6 21:18:49 2007
@@ -44,12 +44,18 @@
                     </execution>
 				</executions>
             </plugin>
-<!--
             <plugin>
                 <groupId>org.apache.myfaces.tobago</groupId>
                 <artifactId>maven-apt-plugin</artifactId>
                 <configuration>
-                    <A>uri=/struts-tags,tlibVersion=2.2.3,jspVersion=1.2,shortName=s,displayName="Struts Tags",outFile=${basedir}/src/main/resources/META-INF/struts-tags.tld, description="To make it easier to access dynamic data; the Apache Struts framework includes a library of custom tags. The tags interact with the framework's validation and internationalization features; to ensure that input is correct and output is localized. The Struts Tags can be used with JSP FreeMarker or Velocity."
+                    <A>uri=/struts-tags,tlibVersion=2.2.3,jspVersion=1.2,shortName=s,displayName="Struts Tags",
+                    outFile=${basedir}/src/main/resources/META-INF/struts-tags.tld,
+                    description="To make it easier to access dynamic data;
+                    the Apache Struts framework includes a library of custom tags.
+                    The tags interact with the framework's validation and internationalization features;
+                    to ensure that input is correct and output is localized.
+                    The Struts Tags can be used with JSP FreeMarker or Velocity.",
+                    outTemplatesDir=${basedir}/src/site/resources/tags
                     </A>
                     <resourceTargetPath>target</resourceTargetPath>
                     <fork>false</fork>
@@ -71,7 +77,6 @@
                 </execution>
 				</executions>
             </plugin>
--->
         </plugins>
     </build>
     
@@ -221,7 +226,6 @@
                 </plugins>
             </build>
         </profile>
-    
     </profiles>
  
     
@@ -443,6 +447,13 @@
             <artifactId>log4j</artifactId>
             <version>1.2.9</version>
             <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts-annotations</artifactId>
+            <version>1.0</version>
+            <scope>compile</scope>
         </dependency>
 
     </dependencies>

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java Sat Jan  6 21:18:49 2007
@@ -20,6 +20,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -87,35 +89,18 @@
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setListenTopics(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Topic that will trigger the remote call")
     public void setListenTopics(String listenTopics) {
         this.listenTopics = listenTopics;
     }
 
-    /**
-     * The theme to use for the element. <b>This tag will usually use the ajax
-     * theme.</b>
-     *
-     * @s.tagattribute required="false" type="String"
-     */
-    public void setTheme(String theme) {
-        super.setTheme(theme);
-    }
-
-
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setHref(java.lang.String)
-     */
+    @StrutsTagAttribute(description="The URL to call to obtain the content. Note: If used with ajax context, the value must be set as an url tag value.")
     public void setHref(String href) {
         this.href = href;
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setErrorText(java.lang.String)
-     */
+    @StrutsTagAttribute(description="The text to display to the user if the is an error fetching the content")
     public void setErrorText(String errorText) {
         this.errorText = errorText;
     }
@@ -137,59 +122,45 @@
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setExecuteScripts(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Javascript code in the fetched content will be executed", type="Boolean", defaultValue="false")
     public void setExecuteScripts(String executeScripts) {
         this.executeScripts = executeScripts;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setLoadingText(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Text to be shown while content is being fetched", defaultValue="Loading...")
     public void setLoadingText(String loadingText) {
         this.loadingText = loadingText;
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setHandler(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Javascript function name that will make the request")
     public void setHandler(String handler) {
         this.handler = handler;
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setFormFilter(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Function name used to filter the fields of the form.")
     public void setFormFilter(String formFilter) {
         this.formFilter = formFilter;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setFormId(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Form id whose fields will be serialized and passed as parameters")
     public void setFormId(String formId) {
         this.formId = formId;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setNotifyTopics(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Topics that will published when the remote call completes")
     public void setNotifyTopics(String notifyTopics) {
         this.notifyTopics = notifyTopics;
     }
 
 
-    /* (non-Javadoc)
-     * @see org.apache.struts2.components.RemoteUICallBean#setShowErrorTransportText(java.lang.String)
-     */
+    @StrutsTagAttribute(description="Set whether errors will be shown or not", type="Boolean", defaultValue="true")
     public void setShowErrorTransportText(String showError) {
         this.showErrorTransportText = showError;
     }
 
-
+    @StrutsTagAttribute(description="Id of element that will be shown while making request")
     public void setIndicator(String indicator) {
         this.indicator = indicator;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java Sat Jan  6 21:18:49 2007
@@ -32,6 +32,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.Dispatcher;
@@ -110,9 +112,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="action" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ActionTag"
- * description="Execute an action from within a view"
  */
+@StrutsTag(name="action", tldTagClass="org.apache.struts2.views.jsp.ActionTag", description="Execute an action from within a view")
 public class ActionComponent extends Component {
     private static final Log LOG = LogFactory.getLog(ActionComponent.class);
 
@@ -132,7 +133,7 @@
         this.req = req;
         this.res = res;
     }
-    
+
     /**
      * @param actionProxyFactory the actionProxyFactory to set
      */
@@ -244,7 +245,7 @@
         ValueStack stack = getStack();
         // execute at this point, after params have been set
         try {
-            
+
             proxy = actionProxyFactory.createActionProxy(namespace, actionName, createExtraContext(), executeResult, true);
             if (null != methodName) {
                 proxy.setMethod(methodName);
@@ -267,50 +268,27 @@
         }
     }
 
-    /**
-     * the id (if speficied) to put the action under stack's context.
-     * @s.tagattribute required="false" type="String"
-     */
-    public void setId(String id) {
-        super.setId(id);
-    }
-
-    /**
-     * name of the action to be executed (without the extension suffix eg. .action)
-     * @s.tagattribute required="true" type="String"
-     */
+    @StrutsTagAttribute(required=true,description="Name of the action to be executed (without the extension suffix eg. .action)")
     public void setName(String name) {
         this.name = name;
     }
 
-    /**
-     * namespace for action to call
-     * @s.tagattribute required="false" type="String" default="namespace from where tag is used"
-     */
+    @StrutsTagAttribute(description="Namespace for action to call", defaultValue="namespace from where tag is used")
     public void setNamespace(String namespace) {
         this.namespace = namespace;
     }
 
-    /**
-     * whether the result of this action (probably a view) should be executed/rendered
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Whether the result of this action (probably a view) should be executed/rendered", type="Boolean", defaultValue="false")
     public void setExecuteResult(boolean executeResult) {
         this.executeResult = executeResult;
     }
 
-    /**
-     * whether the request parameters are to be included when the action is invoked
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Whether the request parameters are to be included when the action is invoked", type="Boolean", defaultValue="false")
     public void setIgnoreContextParams(boolean ignoreContextParams) {
         this.ignoreContextParams = ignoreContextParams;
     }
 
-    /**
-     * whether the writer should be flush upon end of action component tag, default to true.
-     * @s.tagattribute required="false" type="Boolean" default="true"
-     */
+    @StrutsTagAttribute(description="Whether the writer should be flush upon end of action component tag, default to true", type="Boolean", defaultValue="true")
     public void setFlush(boolean flush) {
         this.flush = flush;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionError.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -46,9 +48,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="actionerror" tld-body-content="empty" tld-tag-class="org.apache.struts2.views.jsp.ui.ActionErrorTag"
- * description="Render action errors if they exists"
  */
+@StrutsTag(name="actionerror", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.ui.ActionErrorTag", description="Render action errors if they exists")
 public class ActionError extends UIBean {
 
     public static final String TEMPLATE = "actionerror";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionMessage.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionMessage.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionMessage.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionMessage.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -44,9 +46,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="actionmessage" tld-body-content="empty" tld-tag-class="org.apache.struts2.views.jsp.ui.ActionMessageTag"
- * description="Render action messages if they exists"
  */
+@StrutsTag(name="actionmessage", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.ui.ActionMessageTag", description="Render action messages if they exists")
 public class ActionMessage extends UIBean {
 
     private static final String TEMPLATE = "actionmessage";

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Anchor.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -121,11 +124,8 @@
  * <!-- END SNIPPET: example3 -->
  * </pre>
  *
- *
- * @s.tag name="a" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.AnchorTag"
- * description="Render a HTML href element that when clicked calls a URL via remote XMLHttpRequest and updates its targets"
- *
  */
+@StrutsTag(name="a", tldTagClass="org.apache.struts2.views.jsp.ui.AnchorTag", description="Render a HTML href element that when clicked can optionally call a URL via remote XMLHttpRequest and updates its targets")
 public class Anchor extends AbstractRemoteCallUIBean {
     public static final String OPEN_TEMPLATE = "a";
     public static final String TEMPLATE = "a-close";
@@ -152,20 +152,19 @@
             addParameter("targets", findString(targets));
     }
 
-    /**
-     * The id to assign the component
-     * @s.tagattribute required="false" type="String"
-     */
-    public void setId(String id) {
-        super.setId(id);
-    }
-
-    /**
-     * Comma delimited list of ids of the elements whose content will be updated
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Comma delimited list of ids of the elements whose content will be updated")
     public void setTargets(String targets) {
         this.targets = targets;
     }
 
+    @StrutsTagAttribute(name="onLoadJS", description="Deprecated. Use 'notifyTopics'. Javascript code execute after reload")
+    public void setAfterLoading(String afterLoading) {
+        this.afterLoading = afterLoading;
+    }
+
+
+    @StrutsTagAttribute(name="preInvokeJS", description="Deprecated. Use 'notifyTopics'. Javascript code execute before reload")
+    public void setBeforeLoading(String beforeLoading) {
+        this.beforeLoading = beforeLoading;
+    }
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AppendIterator.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AppendIterator.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AppendIterator.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/AppendIterator.java Sat Jan  6 21:18:49 2007
@@ -27,6 +27,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 import org.apache.struts2.components.Param.UnnamedParametric;
 import org.apache.struts2.util.AppendIteratorFilter;
 import org.apache.struts2.util.MakeIterator;
@@ -112,9 +114,8 @@
  * @see org.apache.struts2.util.AppendIteratorFilter
  * @see org.apache.struts2.views.jsp.iterator.AppendIteratorTag
  *
- * @s.tag name="append" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.iterator.AppendIteratorTag"
- * description="Append the values of a list of iterators to one iterator"
  */
+@StrutsTag(name="append", tldTagClass="org.apache.struts2.views.jsp.iterator.AppendIteratorTag", description="Append the values of a list of iterators to one iterator")
 public class AppendIterator extends Component implements UnnamedParametric {
 
     private static final Log _log = LogFactory.getLog(AppendIterator.class);
@@ -161,10 +162,7 @@
         _parameters.add(value);
     }
 
-    /**
-     * the id of which if supplied will have the resultant appended iterator stored under in the stack's context
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The id of which if supplied will have the resultant appended iterator stored under in the stack's context")
     public void setId(String id) {
         super.setId(id);
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Autocompleter.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Autocompleter.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Autocompleter.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Autocompleter.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -76,9 +79,8 @@
  *      <li>request: request javascript object, when type='load' or type='error'</li>
  * <ul>
  *
- * @s.tag name="autocompleter" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.AutocompleterTag"
- *        description="Renders a combobox with autocomplete and AJAX capabilities"
  */
+@StrutsTag(name="autocompleter", tldTagClass="org.apache.struts2.views.jsp.ui.AutocompleterTag", description="Renders a combobox with autocomplete and AJAX capabilities")
 public class Autocompleter extends ComboBox {
     public static final String TEMPLATE = "autocompleter";
     final private static String COMPONENT_NAME = Autocompleter.class.getName();
@@ -168,136 +170,83 @@
         return (list != null) ? findValue(list, Object.class) : null;
     }
 
-    /**
-     * sets if combobox must perform autocomplete
-     * @s.tagattribute required="false" type="Boolean" default="true"
-     */
+    @StrutsTagAttribute(description="Whether autocompleter should make suggestion on the textbox", type="Boolean", defaultValue="false")
     public void setAutoComplete(String autoComplete) {
         this.autoComplete = autoComplete;
     }
 
-    /**
-     * sets combobox to enabled or disabled
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Enable or disable autocompleter", type="Boolean", defaultValue="false")
     public void setDisabled(String disabled) {
         this.disabled = disabled;
     }
 
-    /**
-     * sets if user can enter a value that is not in a list
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Force selection to be one of the options", type="Boolean", defaultValue="false")
     public void setForceValidOption(String forceValidOption) {
         this.forceValidOption = forceValidOption;
     }
 
-    /**
-     * The URL to call to obtain the content
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="The URL used to load the options")
     public void setHref(String href) {
         this.href = href;
     }
 
-    /**
-     * set delay before making the search
-     * @s.tagattribute required="false" type="Integer" default="100"
-     */
+    @StrutsTagAttribute(description="Delay before making the search", type="Integer", defaultValue="100")
     public void setDelay(String searchDelay) {
         this.delay = searchDelay;
     }
 
-
-    /**
-     * set how the search must be performed, options are: "startstring", "startword" and "substring"
-     * @s.tagattribute required="false" default="stringstart" type="String"
-     */
+    @StrutsTagAttribute(description="how the search must be performed, options are: 'startstring', 'startword' " +
+                "and 'substring'", defaultValue="stringstart")
     public void setSearchType(String searchType) {
         this.searchType = searchType;
     }
 
-    /**
-     * set the height of the dropdown in pixels
-     * @s.tagattribute required="false" default="120" type="Integer"
-     */
+    @StrutsTagAttribute(description="Dropdown's height in pixels", type="Integer", defaultValue="120")
     public void setDropdownHeight(String height) {
         this.dropdownHeight = height;
     }
 
-    /**
-     * set the width of the drodown, by default the same as the combobox
-     * @s.tagattribute required="false" type="Integer"
-     */
+    @StrutsTagAttribute(description="Dropdown's width", type="Integer", defaultValue="same as textbox")
     public void setDropdownWidth(String width) {
         this.dropdownWidth = width;
     }
 
-    /**
-     * Function name used to filter the fields of the form.
-     * This function takes as a parameter the element and returns true if the element
-     * must be included.
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Function name used to filter the fields of the form")
     public void setFormFilter(String formFilter) {
       this.formFilter = formFilter;
     }
 
-    /**
-     * Form id whose fields will be serialized and passed as parameters
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Form id whose fields will be serialized and passed as parameters")
     public void setFormId(String formId) {
       this.formId = formId;
     }
 
-    /**
-     * Topic that will trigger a re-fetch
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Topic that will trigger a reload")
     public void setListenTopics(String listenTopics) {
       this.listenTopics = listenTopics;
     }
 
-    /**
-     * Topic that will be published when content is fetched.
-     * New Value is passed as parameter.
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Topics that will be published when content is reloaded")
     public void setNotifyTopics(String onValueChangedPublishTopic) {
       this.notifyTopics = onValueChangedPublishTopic;
     }
 
-    /**
-     * Id of element that will be shown while request is made
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Id of element that will be shown while request is made")
     public void setIndicator(String indicator) {
         this.indicator = indicator;
     }
 
-    /**
-     * Minimum number of characters that will force the content to be loaded
-     * @s.tagattribute required="false" type="Integer" default="3"
-     */
+    @StrutsTagAttribute(description="Minimum number of characters that will force the content to be loaded", type="Integer", defaultValue="3")
     public void setLoadMinimumCount(String loadMinimumCount) {
         this.loadMinimumCount = loadMinimumCount;
     }
 
-    /**
-     * Options will be reloaded everytime a character is typed on the textbox.
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Options will be reloaded everytime a character is typed on the textbox", type="Boolean", defaultValue="true")
     public void setLoadOnTextChange(String loadOnType) {
         this.loadOnTextChange = loadOnType;
     }
 
-    /**
-     * Show or hide the down arrow button
-     * @s.tagattribute required="false" type="Boolean" default="true"
-     */
+    @StrutsTagAttribute(description="Show or hide the down arrow button", type="Boolean", defaultValue="true")
     public void setShowDownArrow(String showDownArrow) {
         this.showDownArrow = showDownArrow;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Bean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Bean.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Bean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Bean.java Sat Jan  6 21:18:49 2007
@@ -24,6 +24,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
@@ -146,10 +147,8 @@
         OgnlUtil.setProperty(key, value, bean, getStack().getContext());
     }
 
-    /**
-     * the class name of the bean to be instantiated (must respect JavaBean specification)
-     * @s.tagattribute required="true" type="String"
-     */
+    @StrutsTagAttribute(description="The class name of the bean to be instantiated (must respect JavaBean specification)",
+                        required=true)
     public void setName(String name) {
         this.name = name;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Checkbox.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -46,9 +49,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="checkbox" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.CheckboxTag"
- * description="Render a checkbox input field"
-  */
+ */
+@StrutsTag(name="checkbox", tldTagClass="org.apache.struts2.views.jsp.ui.CheckboxTag", description="Render a checkbox input field")
 public class Checkbox extends UIBean {
     final public static String TEMPLATE = "checkbox";
 
@@ -74,10 +76,7 @@
         return Boolean.class; // for checkboxes, everything needs to end up as a Boolean
     }
 
-    /**
-     * The actual HTML value attribute of the checkbox.
-     * @s.tagattribute required="false" default="'true'"
-     */
+    @StrutsTagAttribute(description="The actual HTML value attribute of the checkbox.", defaultValue="true")
     public void setFieldValue(String fieldValue) {
         this.fieldValue = fieldValue;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/CheckboxList.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/CheckboxList.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/CheckboxList.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/CheckboxList.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -40,9 +42,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="checkboxlist" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.CheckboxListTag"
- * description="Render a list of checkboxes"
-  */
+ */
+@StrutsTag(name="checkboxlist", tldTagClass="org.apache.struts2.views.jsp.ui.CheckboxListTag", description="Render a list of checkboxes")
 public class CheckboxList extends ListUIBean {
     final public static String TEMPLATE = "checkboxlist";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ClosingUIBean.java Sat Jan  6 21:18:49 2007
@@ -27,6 +27,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
 
@@ -44,10 +45,7 @@
 
     public abstract String getDefaultOpenTemplate();
 
-    /**
-     * Set template to use for opening the rendered html.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set template to use for opening the rendered html.")
     public void setOpenTemplate(String openTemplate) {
         this.openTemplate = openTemplate;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ComboBox.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ComboBox.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ComboBox.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ComboBox.java Sat Jan  6 21:18:49 2007
@@ -27,6 +27,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 import org.apache.struts2.util.MakeIterator;
 
 import com.opensymphony.xwork2.util.ValueStack;
@@ -85,9 +87,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="combobox" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.ComboBoxTag"
- * description="Widget that fills a text box from a select"
-  */
+ */
+@StrutsTag(name="combobox", tldTagClass="org.apache.struts2.views.jsp.ui.ComboBoxTag", description="Widget that fills a text box from a select")
 public class ComboBox extends TextField {
     final public static String TEMPLATE = "combobox";
 
@@ -165,50 +166,33 @@
                 "Example: people or people.{name}");
     }
 
-    /**
-     * Iteratable source to populate from. If this is missing, the select widget is simply not displayed.
-     * @s.tagattribute required="true"
-      */
+    @StrutsTagAttribute(description="Iteratable source to populate from. " +
+                "If this is missing, the select widget is simply not displayed.", required=true)
     public void setList(String list) {
         this.list = list;
     }
 
-    /**
-     * Decide if an empty option is to be inserted. Default false.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Decide if an empty option is to be inserted. Default false.")
     public void setEmptyOption(String emptyOption) {
         this.emptyOption = emptyOption;
     }
 
-    /**
-     * set the header key for the header option.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the header key for the header option.")
     public void setHeaderKey(String headerKey) {
         this.headerKey = headerKey;
     }
 
-    /**
-     * set the header value for the header option.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the header value for the header option.")
     public void setHeaderValue(String headerValue) {
         this.headerValue = headerValue;
     }
 
-    /**
-     * set the key used to retrive the option key.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the key used to retrive the option key.")
     public void setListKey(String listKey) {
         this.listKey = listKey;
     }
 
-    /**
-     * set the value used to retrive the option value.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the value used to retrive the option value.")
     public void setListValue(String listValue) {
         this.listValue = listValue;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Component.java Sat Jan  6 21:18:49 2007
@@ -31,6 +31,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTagAttribute;
 import org.apache.struts2.StrutsException;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
@@ -453,10 +454,7 @@
         return id;
     }
 
-    /**
-     * id for referencing element. For UI and form tags it will be used as HTML id attribute
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="id for referencing element. For UI and form tags it will be used as HTML id attribute")
     public void setId(String id) {
         if (id != null) {
             this.id = findString(id);

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Date.java Sat Jan  6 21:18:49 2007
@@ -30,6 +30,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.TextProvider;
@@ -135,10 +137,8 @@
  *
  * <code>Date</code>
  *
- * @s.tag name="date" tld-body-content="empty"
- *         tld-tag-class="org.apache.struts2.views.jsp.DateTag"
- *         description="Render a formatted date."
  */
+@StrutsTag(name="date", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.DateTag", description="Render a formatted date.")
 public class Date extends Component {
 
     private static final Log LOG = LogFactory.getLog(Date.class);
@@ -336,20 +336,12 @@
         return super.end(writer, "");
     }
 
-    /**
-     * Date or DateTime format pattern
-     *
-     * @s.tagattribute required="false" rtexprvalue="false"
-     */
+    @StrutsTagAttribute(description="Date or DateTime format pattern", rtexprvalue=false)
     public void setFormat(String format) {
         this.format = format;
     }
 
-    /**
-     * Whether to print out the date nicely
-     *
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Whether to print out the date nicely", type="Boolean", defaultValue="false")
     public void setNice(boolean nice) {
         this.nice = nice;
     }
@@ -361,11 +353,7 @@
         return name;
     }
 
-    /**
-     * The date value to format
-     *
-     * @s.tagattribute required="true" type="String"
-     */
+    @StrutsTagAttribute(description="The date value to format", required=true)
     public void setName(String name) {
         this.name = name;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DatePicker.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DatePicker.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DatePicker.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DatePicker.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -105,9 +108,8 @@
  * <!-- END SNIPPET: expl2 -->
  * </pre>
  *
- * @s.tag name="datepicker" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.DatePickerTag"
- * description="Render datepicker"
  */
+@StrutsTag(name="datepicker", tldTagClass="org.apache.struts2.views.jsp.ui.DatePickerTag", description="Render datepicker")
 public class DatePicker extends UIBean {
 
     final public static String TEMPLATE = "datepicker";
@@ -152,75 +154,43 @@
             addParameter("value", findString(value));
     }
 
-    /**
-     * If true, weekly size of calendar changes to acomodate the month if false, 42 day format is
-     * used
-     *
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="If true, weekly size of calendar changes to acomodate the month if false," +
+                " 42 day format is used", type="Boolean", defaultValue="false")
     public void setAdjustWeeks(String adjustWeeks) {
         this.adjustWeeks = adjustWeeks;
     }
 
-    /**
-     * How to render the names of the days in the header(narrow, abbr or wide)
-     *
-     * @s.tagattribute required="false" type="String" default="narrow"
-     */
+    @StrutsTagAttribute(description="How to render the names of the days in the header(narrow, abbr or wide)", defaultValue="narrow")
     public void setDayWidth(String dayWidth) {
         this.dayWidth = dayWidth;
     }
 
-    /**
-     * Total weeks to display
-     *
-     * @s.tagattribute required="false" type="Integer" default="6"
-     */
+    @StrutsTagAttribute(description="Total weeks to display", type="Integer", defaultValue="6")
     public void setDisplayWeeks(String displayWeeks) {
         this.displayWeeks = displayWeeks;
     }
 
-    /**
-     * Last available date in the calendar set
-     *
-     * @s.tagattribute required="false" type="Date" default="2941-10-12"
-     */
+    @StrutsTagAttribute(description="Last available date in the calendar set", type="Date", defaultValue="2941-10-12")
     public void setEndDate(String endDate) {
         this.endDate = endDate;
     }
 
-    /**
-     * First available date in the calendar set
-     *
-     * @s.tagattribute required="false" type="Date" default="1492-10-12"
-     */
+    @StrutsTagAttribute(description="First available date in the calendar set", type="Date", defaultValue="1492-10-12")
     public void setStartDate(String startDate) {
         this.startDate = startDate;
     }
 
-    /**
-     * Disable all incremental controls, must pick a date in the current display
-     *
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Disable all incremental controls, must pick a date in the current display", type="Boolean", defaultValue="false")
     public void setStaticDisplay(String staticDisplay) {
         this.staticDisplay = staticDisplay;
     }
 
-    /**
-     * Adjusts the first day of the week 0==Sunday..6==Saturday
-     *
-     * @s.tagattribute required="false" type="Integer" default="0"
-     */
+    @StrutsTagAttribute(description="Adjusts the first day of the week 0==Sunday..6==Saturday", type="Integer", defaultValue="0")
     public void setWeekStartsOn(String weekStartsOn) {
         this.weekStartsOn = weekStartsOn;
     }
 
-    /**
-     * Language to display this widget in (like en-us).
-     *
-     * @s.tagattribute required="false" type="String" default="brower's specified preferred language"
-     */
+    @StrutsTagAttribute(description="Language to display this widget in", defaultValue="brower's specified preferred language")
     public void setLanguage(String language) {
         this.language = language;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Div.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -99,9 +102,8 @@
  *       <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="div" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.DivTag"
- *        description="Render HTML div providing content from remote call via AJAX"
  */
+@StrutsTag(name="div", tldTagClass="org.apache.struts2.views.jsp.ui.DivTag", description="Render HTML div providing content from remote call via AJAX")
 public class Div extends AbstractRemoteCallUIBean {
 
     public static final String TEMPLATE = "div";
@@ -144,57 +146,38 @@
             addParameter("stopTimerListenTopics", findString(stopTimerListenTopics));
     }
 
-    /**
-     * Start timer automatically
-     *
-     * @s.tagattribute required="false" type="Boolean" default="true"
-     */
+    @StrutsTagAttribute(description="Start timer automatically", type="Boolean", defaultValue="true")
     public void setAutoStart(String autoStart) {
         this.autoStart = autoStart;
     }
 
-    /**
-     * How long to wait before fetching the content (in milliseconds)
-     *
-     * @s.tagattribute required="false" type="Integer" default="0"
-     */
+    @StrutsTagAttribute(description="How long to wait before fetching the content (in milliseconds)",  type="Integer")
     public void setDelay(String delay) {
         this.delay = delay;
     }
 
-    /**
-     * How often to re-fetch the content (in milliseconds)
-     *
-     * @s.tagattribute required="false" type="Integer" default="0"
-     */
+    @StrutsTagAttribute(description="How often to reload the content (in milliseconds)", type="Integer")
     public void setUpdateFreq(String updateInterval) {
         this.updateFreq = updateInterval;
     }
 
-    /**
-     * Topic that will start the timer (for autoupdate)
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Topics that will start the timer (for autoupdate)")
     public void setStartTimerListenTopics(String startTimerListenTopic) {
         this.startTimerListenTopics = startTimerListenTopic;
     }
 
-    /**
-     * Topic that will stop the timer (for autoupdate)
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Topics that will stop the timer (for autoupdate)")
     public void setStopTimerListenTopics(String stopTimerListenTopic) {
         this.stopTimerListenTopics = stopTimerListenTopic;
     }
 
-    /**
-     * Content will be loaded when div becomes visible
-     *
-     * @s.tagattribute required="false" type="String" default="false"
-     */
+    @StrutsTagAttribute(description="Content will be loaded when div becomes visible, used only inside tabbedPanel", type="Boolean", defaultValue="false")
     public void setRefreshOnShow(String refreshOnShow) {
         this.refreshOnShow = refreshOnShow;
+    }
+
+    @StrutsTagAttribute(description="Deprecated. Use 'notifyTopics'. Javascript code execute after reload")
+    public void setAfterLoading(String afterLoading) {
+        this.afterLoading = afterLoading;
     }
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleListUIBean.java Sat Jan  6 21:18:49 2007
@@ -25,6 +25,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -266,50 +268,32 @@
         }
     }
 
-    /**
-     * The second iterable source to populate from.
-     * @s.tagattribute required="true"
-     */
+    @StrutsTagAttribute(description="The second iterable source to populate from.", required=true)
     public void setDoubleList(String doubleList) {
         this.doubleList = doubleList;
     }
 
-    /**
-     * The key expression to use for second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The key expression to use for second list")
     public void setDoubleListKey(String doubleListKey) {
         this.doubleListKey = doubleListKey;
     }
 
-    /**
-     * The value expression to use for second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The value expression to use for second list")
     public void setDoubleListValue(String doubleListValue) {
         this.doubleListValue = doubleListValue;
     }
 
-    /**
-     * The name for complete component
-     * @s.tagattribute required="true"
-     */
+    @StrutsTagAttribute(description="The name for complete component", required=true)
     public void setDoubleName(String doubleName) {
         this.doubleName = doubleName;
     }
 
-    /**
-     * The value expression for complete component
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The value expression for complete component")
     public void setDoubleValue(String doubleValue) {
         this.doubleValue = doubleValue;
     }
 
-    /**
-     * The form name this component resides in and populates to
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The form name this component resides in and populates to")
     public void setFormName(String formName) {
         this.formName = formName;
     }
@@ -318,10 +302,7 @@
         return formName;
     }
 
-    /**
-     * The css class for the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The css class for the second list")
     public void setDoubleCssClass(String doubleCssClass) {
         this.doubleCssClass = doubleCssClass;
     }
@@ -330,10 +311,7 @@
         return doubleCssClass;
     }
 
-    /**
-     * The css style for the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The css style for the second list")
     public void setDoubleCssStyle(String doubleCssStyle) {
         this.doubleCssStyle = doubleCssStyle;
     }
@@ -342,10 +320,7 @@
         return doubleCssStyle;
     }
 
-    /**
-     * The header key for the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The header key for the second list")
     public void setDoubleHeaderKey(String doubleHeaderKey) {
         this.doubleHeaderKey = doubleHeaderKey;
     }
@@ -354,10 +329,7 @@
         return doubleHeaderKey;
     }
 
-    /**
-     * The header value for the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The header value for the second list")
     public void setDoubleHeaderValue(String doubleHeaderValue) {
         this.doubleHeaderValue = doubleHeaderValue;
     }
@@ -366,10 +338,7 @@
         return doubleHeaderValue;
     }
 
-    /**
-     * Decides if the second list will add an empty option
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Decides if the second list will add an empty option")
     public void setDoubleEmptyOption(String doubleEmptyOption) {
         this.doubleEmptyOption = doubleEmptyOption;
     }
@@ -383,10 +352,7 @@
         return doubleDisabled;
     }
 
-    /**
-     * Decides if a disable attribute should be added to the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Decides if a disable attribute should be added to the second list")
     public void setDoubleDisabled(String doubleDisabled) {
         this.doubleDisabled = doubleDisabled;
     }
@@ -395,10 +361,7 @@
         return doubleId;
     }
 
-    /**
-     * The id of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The id of the second list")
     public void setDoubleId(String doubleId) {
         this.doubleId = doubleId;
     }
@@ -407,10 +370,7 @@
         return doubleMultiple;
     }
 
-    /**
-     * Decides if multiple attribute should be set on the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description=" Decides if multiple attribute should be set on the second list")
     public void setDoubleMultiple(String doubleMultiple) {
         this.doubleMultiple = doubleMultiple;
     }
@@ -419,10 +379,7 @@
         return doubleOnblur;
     }
 
-    /**
-     * Set the onblur attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onblur attribute of the second list")
     public void setDoubleOnblur(String doubleOnblur) {
         this.doubleOnblur = doubleOnblur;
     }
@@ -431,10 +388,7 @@
         return doubleOnchange;
     }
 
-    /**
-     * Set the onchange attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onchange attribute of the second list")
     public void setDoubleOnchange(String doubleOnchange) {
         this.doubleOnchange = doubleOnchange;
     }
@@ -443,10 +397,7 @@
         return doubleOnclick;
     }
 
-    /**
-     * Set the onclick attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onclick attribute of the second list")
     public void setDoubleOnclick(String doubleOnclick) {
         this.doubleOnclick = doubleOnclick;
     }
@@ -455,10 +406,7 @@
         return doubleOndblclick;
     }
 
-    /**
-     * Set the ondbclick attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the ondbclick attribute of the second list")
     public void setDoubleOndblclick(String doubleOndblclick) {
         this.doubleOndblclick = doubleOndblclick;
     }
@@ -467,10 +415,7 @@
         return doubleOnfocus;
     }
 
-    /**
-     * Set the onfocus attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onfocus attribute of the second list")
     public void setDoubleOnfocus(String doubleOnfocus) {
         this.doubleOnfocus = doubleOnfocus;
     }
@@ -479,10 +424,7 @@
         return doubleOnkeydown;
     }
 
-    /**
-     * Set the onkeydown attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onkeydown attribute of the second list")
     public void setDoubleOnkeydown(String doubleOnkeydown) {
         this.doubleOnkeydown = doubleOnkeydown;
     }
@@ -491,10 +433,7 @@
         return doubleOnkeypress;
     }
 
-    /**
-     * Set the onkeypress attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onkeypress attribute of the second list")
     public void setDoubleOnkeypress(String doubleOnkeypress) {
         this.doubleOnkeypress = doubleOnkeypress;
     }
@@ -503,10 +442,7 @@
         return doubleOnkeyup;
     }
 
-    /**
-     * Set the onkeyup attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onkeyup attribute of the second list")
     public void setDoubleOnkeyup(String doubleOnkeyup) {
         this.doubleOnkeyup = doubleOnkeyup;
     }
@@ -515,10 +451,7 @@
         return doubleOnmousedown;
     }
 
-    /**
-     * Set the onmousedown attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onmousedown attribute of the second list")
     public void setDoubleOnmousedown(String doubleOnmousedown) {
         this.doubleOnmousedown = doubleOnmousedown;
     }
@@ -527,10 +460,7 @@
         return doubleOnmousemove;
     }
 
-    /**
-     * Set the onmousemove attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onmousemove attribute of the second list")
     public void setDoubleOnmousemove(String doubleOnmousemove) {
         this.doubleOnmousemove = doubleOnmousemove;
     }
@@ -539,10 +469,7 @@
         return doubleOnmouseout;
     }
 
-    /**
-     * Set the onmouseout attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onmouseout attribute of the second list")
     public void setDoubleOnmouseout(String doubleOnmouseout) {
         this.doubleOnmouseout = doubleOnmouseout;
     }
@@ -551,10 +478,7 @@
         return doubleOnmouseover;
     }
 
-    /**
-     * Set the onmouseover attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onmouseover attribute of the second list")
     public void setDoubleOnmouseover(String doubleOnmouseover) {
         this.doubleOnmouseover = doubleOnmouseover;
     }
@@ -563,10 +487,7 @@
         return doubleOnmouseup;
     }
 
-    /**
-     * Set the onmouseup attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onmouseup attribute of the second list")
     public void setDoubleOnmouseup(String doubleOnmouseup) {
         this.doubleOnmouseup = doubleOnmouseup;
     }
@@ -575,10 +496,7 @@
         return doubleOnselect;
     }
 
-    /**
-     * Set the onselect attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the onselect attribute of the second list")
     public void setDoubleOnselect(String doubleOnselect) {
         this.doubleOnselect = doubleOnselect;
     }
@@ -587,10 +505,7 @@
         return doubleSize;
     }
 
-    /**
-     * Set the size attribute of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the size attribute of the second list")
     public void setDoubleSize(String doubleSize) {
         this.doubleSize = doubleSize;
     }
@@ -599,10 +514,7 @@
         return doubleList;
     }
 
-    /**
-     * Set the list key of the second attribute
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the list key of the second attribute")
     public String getDoubleListKey() {
         return doubleListKey;
     }
@@ -619,51 +531,36 @@
         return doubleValue;
     }
 
-    /**
-     * Decides of an empty option is to be inserted in the second list
-     * @s.tagattribute required="false" default="false" type="Boolean"
-     */
+    @StrutsTagAttribute(description="Decides of an empty option is to be inserted in the second list", type="Boolean", defaultValue="false")
     public void setEmptyOption(String emptyOption) {
         this.emptyOption = emptyOption;
     }
 
-    /**
-     * Set the header key of the second list. Must not be empty! "'-1'" and "''" is correct, "" is bad.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the header key of the second list. Must not be empty! " +
+                "'-1' and '' is correct, '' is bad.")
     public void setHeaderKey(String headerKey) {
         this.headerKey = headerKey;
     }
 
-    /**
-     * Set the header value of the second list
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description=" Set the header value of the second list")
     public void setHeaderValue(String headerValue) {
         this.headerValue = headerValue;
     }
 
-    /**
-     * Creates a multiple select. The tag will pre-select multiple values if the values are passed as an Array (of appropriate types) via the value attribute.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Creates a multiple select. " +
+                "The tag will pre-select multiple values if the values are passed as an Array " +
+                "(of appropriate types) via the value attribute.")
     public void setMultiple(String multiple) {
         // TODO: Passing a Collection may work too?
         this.multiple = multiple;
     }
 
-    /**
-     * Size of the element box (# of elements to show)
-     * @s.tagattribute required="false" type="Integer"
-     */
+    @StrutsTagAttribute(description="Size of the element box (# of elements to show)", type="Integer")
     public void setSize(String size) {
         this.size = size;
     }
 
-    /**
-     * Set the html accesskey attribute.
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="Set the html accesskey attribute.")
     public void setDoubleAccesskey(String doubleAccesskey) {
         this.doubleAccesskey = doubleAccesskey;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DoubleSelect.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -39,9 +41,9 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="doubleselect" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.DoubleSelectTag"
- * description="Renders two HTML select elements with second one changing displayed values depending on selected entry of first one."
  */
+@StrutsTag(name="doubleselect", tldTagClass="org.apache.struts2.views.jsp.ui.DoubleSelectTag", description="Renders two HTML select elements with second one changing displayed values depending on " +
+                "selected entry of first one.")
 public class DoubleSelect extends DoubleListUIBean {
     final public static String TEMPLATE = "doubleselect";
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/DropdownDateTimePicker.java Sat Jan  6 21:18:49 2007
@@ -26,6 +26,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
 
@@ -42,10 +44,9 @@
  * available with saveFormat
  * </p>
  *
- * @s.tag name="dropdowndatetimepicker" tld-body-content="JSP"
- *        tld-tag-class="org.apache.struts2.views.jsp.ui.DropdownDateTimePickerTag"
- *        description="Render a dropdown picker(datepicker or timepicker)"
  */
+@StrutsTag(name="dropdowndatetimepicker", tldTagClass="org.apache.struts2.views.jsp.ui.DropdownDateTimePickerTag",
+    description="Renders a dropdown picker(datepicker or timepicker)")
 public class DropdownDateTimePicker extends DatePicker {
     final public static String TEMPLATE = "dropdowndatetimepicker";
     final private static SimpleDateFormat RFC3399_FORMAT = new SimpleDateFormat(
@@ -134,59 +135,34 @@
         }
     }
 
-    /**
-     * A pattern used for the visual display of the formatted date, e.g.
-     * dd/MM/yyyy.
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="A pattern used for the visual display of the formatted date, e.g. dd/MM/yyyy")
     public void setDisplayFormat(String displayFormat) {
         this.displayFormat = displayFormat;
     }
 
-    /**
-     * Type of formatting used for visual display, appropriate to locale (choice
-     * of long, short, medium or full)
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Type of formatting used for visual display. Possible values are " +
+                "long, short, medium or full", defaultValue="short")
     public void setFormatLength(String formatLength) {
         this.formatLength = formatLength;
     }
 
-    /**
-     * Path to icon used for the dropdown
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description=" Path to icon used for the dropdown")
     public void setIconPath(String iconPath) {
         this.iconPath = iconPath;
     }
 
-    /**
-     * Duration of toggle in seconds
-     *
-     * @s.tagattribute required="false" type="Integer" default="100"
-     */
+    @StrutsTagAttribute(description="Duration of toggle in milliseconds", type="Integer", defaultValue="100")
     public void setToggleDuration(String toggleDuration) {
         this.toggleDuration = toggleDuration;
     }
 
-    /**
-     * Defines the type of the picker on the dropdown. Possible values are
-     * "date" for a DatePicker, and "time" for a timePicker
-     *
-     * @s.tagattribute required="false" type="String" default="date"
-     */
+    @StrutsTagAttribute(description="Defines the type of the picker on the dropdown. Possible values are 'date'" +
+                " for a DatePicker, and 'time' for a timePicker", defaultValue="date")
     public void setType(String type) {
         this.type = type;
     }
 
-    /**
-     * Toggle type of the dropdown. Possible values are plain,wipe,explode,fade
-     *
-     * @s.tagattribute required="false" type="String" default="plain"
-     */
+    @StrutsTagAttribute(description="oggle type of the dropdown. Possible values are plain,wipe,explode,fade", defaultValue="plain")
     public void setToggleType(String toggleType) {
         this.toggleType = toggleType;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Else.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Else.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Else.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Else.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import java.io.Writer;
 import java.util.Map;
 
+import org.apache.struts.annotations.StrutsTag;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -54,8 +56,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="else" bodycontent="JSP" description="Else tag"  tld-tag-class="org.apache.struts2.views.jsp.ElseTag"
  */
+@StrutsTag(name="else", tldTagClass="org.apache.struts2.views.jsp.ElseTag", description="Else tag")
 public class Else extends Component {
     public Else(ValueStack stack) {
         super(stack);

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ElseIf.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ElseIf.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ElseIf.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ElseIf.java Sat Jan  6 21:18:49 2007
@@ -22,6 +22,9 @@
 
 import java.io.Writer;
 
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -58,8 +61,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="elseif" tld-body-content="JSP" description="Elseif tag"  tld-tag-class="org.apache.struts2.views.jsp.ElseIfTag"
  */
+@StrutsTag(name="elseif", tldTagClass="org.apache.struts2.views.jsp.ElseIfTag", description="Elseif tag")
 public class ElseIf extends Component {
     public ElseIf(ValueStack stack) {
         super(stack);
@@ -97,10 +100,7 @@
         return super.end(writer, "");
     }
 
-    /**
-     * Expression to determine if body of tag is to be displayed
-     * @s.tagattribute required="true" type="Boolean"
-     */
+    @StrutsTagAttribute(description="Expression to determine if body of tag is to be displayed", type="Boolean", required=true)
     public void setTest(String test) {
         this.test = test;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FieldError.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FieldError.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FieldError.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FieldError.java Sat Jan  6 21:18:49 2007
@@ -26,6 +26,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTag;
 import org.apache.struts2.components.Param.UnnamedParametric;
 
 import com.opensymphony.xwork2.util.ValueStack;
@@ -80,9 +81,9 @@
  * <!-- END SNIPPET: description -->
  * </pre>
  *
- * @s.tag name="fielderror" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.FieldErrorTag"
- * description="Render field error (all or partial depending on param tag nested)if they exists"
  */
+@StrutsTag(name="fielderror", tldTagClass="org.apache.struts2.views.jsp.ui.FieldErrorTag", description="Render field error (all " +
+                "or partial depending on param tag nested)if they exists")
 public class FieldError extends UIBean implements UnnamedParametric {
 
     private List errorFieldNames = new ArrayList();

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/File.java Sat Jan  6 21:18:49 2007
@@ -25,6 +25,8 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 
 import com.opensymphony.xwork2.util.ValueStack;
 
@@ -42,9 +44,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="file" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.FileTag"
- * description="Render a file input field"
  */
+@StrutsTag(name="file", tldTagClass="org.apache.struts2.views.jsp.ui.FileTag", description="Render a file input field")
 public class File extends UIBean {
     private final static Log log = LogFactory.getLog(File.class);
 
@@ -88,18 +89,12 @@
         }
     }
 
-    /**
-     * HTML accept attribute to indicate accepted file mimetypes
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="HTML accept attribute to indicate accepted file mimetypes")
     public void setAccept(String accept) {
         this.accept = accept;
     }
 
-    /**
-     * HTML size attribute
-     * @s.tagattribute required="false" type="Integer"
-     */
+    @StrutsTagAttribute(description="HTML size attribute", required=false, type="Integer")
     public void setSize(String size) {
         this.size = size;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/Form.java Sat Jan  6 21:18:49 2007
@@ -30,6 +30,8 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.struts.annotations.StrutsTag;
+import org.apache.struts.annotations.StrutsTagAttribute;
 import org.apache.struts2.StrutsConstants;
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.dispatcher.mapper.ActionMapper;
@@ -91,9 +93,8 @@
  * <!-- END SNIPPET: example -->
  * </pre>
  *
- * @s.tag name="form" tld-body-content="JSP" tld-tag-class="org.apache.struts2.views.jsp.ui.FormTag"
- * description="Renders an input form"
  */
+@StrutsTag(name="form", tldTagClass="org.apache.struts2.views.jsp.ui.FormTag", description="Renders an input form")
 public class Form extends ClosingUIBean {
     public static final String OPEN_TEMPLATE = "form";
     public static final String TEMPLATE = "form-close";
@@ -110,7 +111,7 @@
     protected String portletMode;
     protected String windowState;
     protected String acceptcharset;
-    
+
     protected boolean enableDynamicMethodInvocation = true;
     protected Configuration configuration;
     protected ObjectFactory objectFactory;
@@ -130,17 +131,17 @@
     protected String getDefaultTemplate() {
         return TEMPLATE;
     }
-    
+
     @Inject(StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION)
     public void setEnableDynamicMethodInvocation(String enable) {
         enableDynamicMethodInvocation = "true".equals(enable);
     }
-    
+
     @Inject
     public void setConfiguration(Configuration configuration) {
         this.configuration = configuration;
     }
-    
+
     @Inject
     public void setObjectFactory(ObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
@@ -435,93 +436,53 @@
         return sequence++;
     }
 
-
-    /**
-     * HTML onsubmit attribute
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="HTML onsubmit attribute")
     public void setOnsubmit(String onsubmit) {
         this.onsubmit = onsubmit;
     }
 
-    /**
-     * Set action nane to submit to, without .action suffix
-     *
-     * @s.tagattribute required="false" default="current action"
-     */
+    @StrutsTagAttribute(description="Set action nane to submit to, without .action suffix", defaultValue="current action")
     public void setAction(String action) {
         this.action = action;
     }
 
-    /**
-     * HTML form target attribute
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="HTML form target attribute")
     public void setTarget(String target) {
         this.target = target;
     }
 
-    /**
-     * HTML form enctype attribute
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="HTML form enctype attribute")
     public void setEnctype(String enctype) {
         this.enctype = enctype;
     }
 
-    /**
-     * HTML form method attribute
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="HTML form method attribute")
     public void setMethod(String method) {
         this.method = method;
     }
 
-    /**
-     * namespace for action to submit to
-     *
-     * @s.tagattribute required="false" default="current namespace"
-     */
+    @StrutsTagAttribute(description="Namespace for action to submit to", defaultValue="current namespace")
     public void setNamespace(String namespace) {
         this.namespace = namespace;
     }
 
-    /**
-     * Whether client side/remote validation should be performed. Only useful with theme xhtml/ajax
-     *
-     * @s.tagattribute required="false" type="Boolean" default="false"
-     */
+    @StrutsTagAttribute(description="Whether client side/remote validation should be performed. Only" +
+                " useful with theme xhtml/ajax", type="Boolean", defaultValue="false")
     public void setValidate(String validate) {
         this.validate = validate;
     }
 
-    /**
-     * The portlet mode to display after the form submit
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="he portlet mode to display after the form submit")
     public void setPortletMode(String portletMode) {
         this.portletMode = portletMode;
     }
 
-    /**
-     * The window state to display after the form submit
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The window state to display after the form submit")
     public void setWindowState(String windowState) {
         this.windowState = windowState;
     }
 
-    /**
-     * The accepted charsets for this form. The values may be comma or blank delimited.
-     *
-     * @s.tagattribute required="false"
-     */
+    @StrutsTagAttribute(description="The accepted charsets for this form. The values may be comma or blank delimited.")
     public void setAcceptcharset(String acceptcharset) {
         this.acceptcharset = acceptcharset;
     }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java?view=diff&rev=493648&r1=493647&r2=493648
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/FormButton.java Sat Jan  6 21:18:49 2007
@@ -23,6 +23,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.struts.annotations.StrutsTagAttribute;
+
 import com.opensymphony.xwork2.util.ValueStack;
 
 /**
@@ -139,38 +141,23 @@
      */
     protected abstract boolean supportsImageType();
 
-    /**
-     * Set action attribute.
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Set action attribute.")
     public void setAction(String action) {
         this.action = action;
     }
 
-    /**
-     * Set method attribute.
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="Set method attribute.")
     public void setMethod(String method) {
         this.method = method;
     }
 
-    /**
-     * HTML align attribute.
-     *
-     * @s.tagattribute required="false" type="String"
-     */
+    @StrutsTagAttribute(description="HTML align attribute.")
     public void setAlign(String align) {
         this.align = align;
     }
 
-    /**
-     * The type of submit to use. Valid values are <i>input</i>, <i>button</i> and <i>image</i>.
-     *
-     * @s.tagattribute required="false" type="String" default="input"
-     */
+    @StrutsTagAttribute(description="The type of submit to use. Valid values are <i>input</i>, " +
+                "<i>button</i> and <i>image</i>.", defaultValue="input")
     public void setType(String type) {
         this.type = type;
     }