Author: ivaynberg
Date: Thu Mar  6 10:59:05 2008
New Revision: 634378

URL: http://svn.apache.org/viewvc?rev=634378&view=rev
Log:
todo

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java

Modified: 
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?rev=634378&r1=634377&r2=634378&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
(original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java 
Thu Mar  6 10:59:05 2008
@@ -58,16 +58,16 @@
 
 /**
  * Component serves as the highest level abstract base class for all 
components.
- *
+ * 
  * <ul>
  * <li><b>Identity </b>- All Components must have a non-null id which is 
retrieved by calling
  * getId(). The id must be unique within the MarkupContainer that holds the 
Component, but does not
  * have to be globally unique or unique within a Page's component hierarchy.
- *
+ * 
  * <li><b>Hierarchy </b>- A component has a parent which can be retrieved with 
[EMAIL PROTECTED] #getParent()}.
  * If a component is an instance of MarkupContainer, it may have children. In 
this way it has a
  * place in the hierarchy of components contained on a given page.
- *
+ * 
  * <li><b>Component Paths </b>- The path from the Page at the root of the 
component hierarchy to a
  * given Component is simply the concatenation with dot separators of each id 
along the way. For
  * example, the path "a.b.c" would refer to the component named "c" inside the 
MarkupContainer named
@@ -76,12 +76,12 @@
  * bear a PageMap/Session-relative identifier as their id, so each absolute 
path will begin with a
  * number, such as "0.a.b.c". To get a Component path relative to the page 
that contains it, you can
  * call getPageRelativePath().
- *
+ * 
  * <li><b>LifeCycle </b>- Components participate in the following lifecycle 
phases:
  * <ul>
  * <li><b>Construction </b>- A Component is constructed with the Java language 
new operator.
  * Children may be added during construction if the Component is a 
MarkupContainer.
- *
+ * 
  * <li><b>Request Handling </b>- An incoming request is processed by a 
protocol request handler
  * such as WicketServlet. An associated Application object creates Session, 
Request and Response
  * objects for use by a given Component in updating its model and rendering a 
response. These
@@ -89,7 +89,7 @@
  * [EMAIL PROTECTED] Component#getRequestCycle()}. The convenience methods 
[EMAIL PROTECTED] Component#getRequest()},
  * [EMAIL PROTECTED] Component#getResponse()} and [EMAIL PROTECTED] 
Component#getSession()} provide easy access to the
  * contents of this container.
- *
+ * 
  * <li><b>Listener Invocation </b>- If the request references a listener on an 
existing Component,
  * that listener is called, allowing arbitrary user code to handle events such 
as link clicks or
  * form submits. Although arbitrary listeners are supported in Wicket, the 
need to implement a new
@@ -102,24 +102,24 @@
  * interface methods in Java must be public). Instead, Form subclasses should 
override user-oriented
  * methods such as onValidate(), onSubmit() and onError() (although only the 
latter two are likely
  * to be overridden in practice).
- *
+ * 
  * <li><b>onBeginRequest </b>- The [EMAIL PROTECTED] 
Component#onBeginRequest()} method is called.
- *
+ * 
  * <li><b>Form Submit </b>- If a Form has been submitted and the Component is 
a FormComponent, the
  * component's model is validated by a call to FormComponent.validate().
- *
+ * 
  * <li><b>Form Model Update </b>- If a valid Form has been submitted and the 
Component is a
  * FormComponent, the component's model is updated by a call to 
FormComponent.updateModel().
- *
+ * 
  * <li><b>Rendering </b>- A markup response is generated by the Component via
  * [EMAIL PROTECTED] Component#render()}, which calls subclass implementation 
code contained in
  * [EMAIL PROTECTED] 
Component#onRender(org.apache.wicket.markup.MarkupStream)}. Once this phase 
begins, a
  * Component becomes immutable. Attempts to alter the Component will result in 
a
  * WicketRuntimeException.
- *
+ * 
  * <li><b>onEndRequest </b>() - The [EMAIL PROTECTED] 
Component#onEndRequest()} method is called.
  * </ul>
- *
+ * 
  * <li><b>Component Models </b>- The primary responsibility of a component is 
to use its model (an
  * object that implements IModel), which can be set via [EMAIL PROTECTED] 
Component#setModel(IModel model)} and
  * retrieved via [EMAIL PROTECTED] Component#getModel()}, to render a response 
in an appropriate markup
@@ -128,29 +128,29 @@
  * convenience method [EMAIL PROTECTED] Component#getModelObject()} is 
provided to retrieve the model Object
  * from its IModel wrapper. A further convenience method, [EMAIL PROTECTED] 
Component#getModelObjectAsString()},
  * is provided for the very common operation of converting the wrapped model 
Object to a String.
- *
+ * 
  * <li><b>Visibility </b>- Components which have setVisible(false) will return 
false from
  * isVisible() and will not render a response (nor will their children).
- *
+ * 
  * <li><b>Page </b>- The Page containing any given Component can be retrieved 
by calling
  * [EMAIL PROTECTED] Component#getPage()}. If the Component is not attached to 
a Page, an
  * IllegalStateException will be thrown. An equivalent method, [EMAIL 
PROTECTED] Component#findPage()} is
  * available for special circumstances where it might be desirable to get a 
null reference back
  * instead.
- *
+ * 
  * <li><b>Session </b>- The Page for a Component points back to the Session 
that contains the Page.
  * The Session for a component can be accessed with the convenience method 
getSession(), which
  * simply calls getPage().getSession().
- *
+ * 
  * <li><b>Locale </b>- The Locale for a Component is available through the 
convenience method
  * getLocale(), which is equivalent to getSession().getLocale().
- *
+ * 
  * <li><b>String Resources </b>- Components can have associated String 
resources via the
  * Application's Localizer, which is available through the method [EMAIL 
PROTECTED] Component#getLocalizer()}.
  * The convenience methods [EMAIL PROTECTED] Component#getString(String key)} 
and
  * [EMAIL PROTECTED] Component#getString(String key, IModel model)} wrap the 
identical methods on the
  * Application Localizer for easy access in Components.
- *
+ * 
  * <li><b>Style </b>- The style ("skin") for a component is available through
  * [EMAIL PROTECTED] Component#getStyle()}, which is equivalent to 
getSession().getStyle(). Styles are
  * intended to give a particular look to a Component or Resource that is 
independent of its Locale.
@@ -158,39 +158,39 @@
  * the design look of "ocean" to the user. If the Session's style is set to 
"ocean" and these
  * resources are given names suffixed with "_ocean", Wicket's resource 
management logic will prefer
  * these resources to other resources, such as default resources, which are 
not as good of a match.
- *
+ * 
  * <li><b>Variation </b>- Whereas Styles are Session (user) specific, 
variations are component
  * specific. E.g. if the Style is "ocean" and the Variation is "NorthSea", 
than the resources are
  * given the names suffixed with "_ocean_NorthSea".
- *
+ * 
  * <li><b>AttributeModifiers </b>- You can add one or more [EMAIL PROTECTED] 
AttributeModifier}s to any
  * component if you need to programmatically manipulate attributes of the 
markup tag to which a
  * Component is attached.
- *
+ * 
  * <li><b>Application, ApplicationSettings and ApplicationPages </b>- The 
getApplication() method
  * provides convenient access to the Application for a Component via 
getSession().getApplication().
  * The getApplicationSettings() method is equivalent to 
getApplication().getSettings(). The
  * getApplicationPages is equivalent to getApplication().getPages().
- *
+ * 
  * <li><b>Feedback Messages </b>- The [EMAIL PROTECTED] 
Component#debug(String)},
  * [EMAIL PROTECTED] Component#info(String)}, [EMAIL PROTECTED] 
Component#warn(String)},
  * [EMAIL PROTECTED] Component#error(java.io.Serializable)} and [EMAIL 
PROTECTED] Component#fatal(String)} methods
  * associate feedback messages with a Component. It is generally not necessary 
to use these methods
  * directly since Wicket validators automatically register feedback messages 
on Components. Any
  * feedback message for a given Component can be retrieved with [EMAIL 
PROTECTED] Component#getFeedbackMessage}.
- *
+ * 
  * <li><b>Page Factory </b>- It is possible to change the way that Pages are 
constructed by
  * overriding the [EMAIL PROTECTED] Component#getPageFactory()} method, 
returning your own implementation of
  * [EMAIL PROTECTED] org.apache.wicket.IPageFactory}.
- *
+ * 
  * <li><b>Versioning </b>- Pages are the unit of versioning in Wicket, but 
fine-grained control of
  * which Components should participate in versioning is possible via the
  * [EMAIL PROTECTED] Component#setVersioned(boolean)} method. The versioning 
participation of a given Component
  * can be retrieved with [EMAIL PROTECTED] Component#isVersioned()}.
- *
+ * 
  * <li><b>AJAX support</b>- Components can be re-rendered after the whole Page 
has been rendered
  * at least once by calling doRender().
- *
+ * 
  * @author Jonathan Locke
  * @author Chris Turner
  * @author Eelco Hillenius
@@ -212,7 +212,7 @@
 
                /**
                 * Construct.
-                *
+                * 
                 * @param model
                 */
                public ComponentModelChange(IModel model)
@@ -261,7 +261,7 @@
 
                /**
                 * Called at each component in a traversal.
-                *
+                * 
                 * @param component
                 *            The component
                 * @return CONTINUE_TRAVERSAL (null) if the traversal should 
continue, or a non-null return
@@ -273,7 +273,7 @@
 
        /**
         * Change object for undoing addition of behavior
-        *
+        * 
         * @author Igor Vaynberg (ivaynberg)
         */
        private final class AddedBehaviorChange extends Change
@@ -285,7 +285,7 @@
 
                /**
                 * Construct.
-                *
+                * 
                 * @param behavior
                 */
                public AddedBehaviorChange(IBehavior behavior)
@@ -307,7 +307,7 @@
 
        /**
         * Undo change for component border property
-        *
+        * 
         * @author ivaynberg
         */
        private class ComponentBorderChange extends Change
@@ -325,7 +325,7 @@
 
        /**
         * Change object for undoing removal of behavior
-        *
+        * 
         * @author Igor Vaynberg (ivaynberg)
         */
        private final class RemovedBehaviorChange extends Change
@@ -337,7 +337,7 @@
 
                /**
                 * Construct.
-                *
+                * 
                 * @param behavior
                 */
                public RemovedBehaviorChange(IBehavior behavior)
@@ -373,7 +373,7 @@
 
                /**
                 * Construct.
-                *
+                * 
                 * @param component
                 */
                EnabledChange(final Component component)
@@ -414,7 +414,7 @@
 
                /**
                 * Construct.
-                *
+                * 
                 * @param component
                 */
                VisibilityChange(final Component component)
@@ -453,12 +453,12 @@
         * When a component is not allowed to be enabled (in effect disabled 
through the implementation
         * of this interface), Wicket will try to prevent model updates too. 
This is not completely fail
         * safe, as constructs like:
-        *
+        * 
         * <pre>
         * User u = (User)getModelObject();
         * u.setName(&quot;got you there!&quot;);
         * </pre>
-        *
+        * 
         * can't be prevented. Indeed it can be argued that any model 
protection is best dealt with in
         * your model objects to be completely secured. Wicket will catch all 
normal framework-directed
         * use though.
@@ -854,7 +854,7 @@
        /**
         * Constructor. All components have names. A component's id cannot be 
null. This is the minimal
         * constructor of component. It does not register a model.
-        *
+        * 
         * @param id
         *            The non-null id of this component
         * @throws WicketRuntimeException
@@ -876,12 +876,12 @@
        /**
         * Constructor. All components have names. A component's id cannot be 
null. This constructor
         * includes a model.
-        *
+        * 
         * @param id
         *            The non-null id of this component
         * @param model
         *            The component's model
-        *
+        * 
         * @throws WicketRuntimeException
         *             Thrown if the component has been given a null id.
         */
@@ -893,13 +893,13 @@
 
        /**
         * Adds an behavior modifier to the component.
-        *
+        * 
         * <p>
         * Note: this method is override to enable users to do things like 
discussed in <a
         * 
href="http://www.nabble.com/Why-add%28IBehavior%29-is-final--tf2598263.html#a7248198";>this
         * thread</a>.
         * </p>
-        *
+        * 
         * @param behavior
         *            The behavior modifier to be added
         * @return this (to allow method call chaining)
@@ -1042,7 +1042,7 @@
 
        /**
         * Redirects to any intercept page previously specified by a call to 
redirectToInterceptPage.
-        *
+        * 
         * @return True if an original destination was redirected to
         * @see Component#redirectToInterceptPage(Page)
         */
@@ -1053,7 +1053,7 @@
 
        /**
         * Registers a debug feedback message for this component
-        *
+        * 
         * @param message
         *            The feedback message
         */
@@ -1103,7 +1103,7 @@
 
        /**
         * THIS IS WICKET INTERNAL ONLY. DO NOT USE IT.
-        *
+        * 
         * Traverses all behaviors and calls detachModel() on them. This is 
needed to cleanup behavior
         * after render. This method is necessary for [EMAIL PROTECTED] 
AjaxRequestTarget} to be able to cleanup
         * component's behaviors after header contribution has been done (which 
is separated from
@@ -1147,7 +1147,7 @@
 
        /**
         * Registers an error feedback message for this component
-        *
+        * 
         * @param message
         *            The feedback message
         */
@@ -1159,7 +1159,7 @@
 
        /**
         * Registers an fatal error feedback message for this component
-        *
+        * 
         * @param message
         *            The feedback message
         */
@@ -1171,7 +1171,7 @@
 
        /**
         * Finds the first container parent of this component of the given 
class.
-        *
+        * 
         * @param c
         *            MarkupContainer class to search for
         * @return First container parent that is an instance of the given 
class, or null if none can be
@@ -1220,7 +1220,7 @@
 
        /**
         * Gets interface to application that this component is a part of.
-        *
+        * 
         * @return The application associated with the session that this 
component is in.
         * @see Application
         */
@@ -1232,7 +1232,7 @@
        /**
         * Gets the currently coupled [EMAIL PROTECTED] IBehavior}s as a 
unmodifiable list. Returns an empty list
         * rather than null if there are no behaviors coupled to this component.
-        *
+        * 
         * @return The currently coupled behaviors as a unmodifiable list
         */
        public final List/* <IBehavior> */getBehaviors()
@@ -1268,10 +1268,10 @@
 
        /**
         * Gets the converter that should be used by this component.
-        *
+        * 
         * @param type
         *            The type to convert to
-        *
+        * 
         * @return The converter that should be used by this component
         */
        public IConverter getConverter(Class/* <?> */type)
@@ -1281,7 +1281,7 @@
 
        /**
         * Gets whether model strings should be escaped.
-        *
+        * 
         * @return Returns whether model strings should be escaped
         */
        public final boolean getEscapeModelStrings()
@@ -1299,7 +1299,7 @@
 
        /**
         * Gets the id of this component.
-        *
+        * 
         * @return The id of this component
         */
        public String getId()
@@ -1318,7 +1318,7 @@
        /**
         * Gets the locale for this component. By default, it searches its 
parents for a locale. If no
         * parents (it's a recursive search) returns a locale, it gets one from 
the session.
-        *
+        * 
         * @return The locale to be used for this component
         * @see Session#getLocale()
         */
@@ -1334,7 +1334,7 @@
 
        /**
         * Convenience method to provide easy access to the localizer object 
within any component.
-        *
+        * 
         * @return The localizer object
         */
        public final Localizer getLocalizer()
@@ -1344,14 +1344,14 @@
 
        /**
         * THIS IS WICKET INTERNAL ONLY. DO NOT USE IT.
-        *
+        * 
         * Get a copy of the markup's attributes which are associated with the 
component.
         * <p>
         * Modifications to the map returned don't change the tags attributes. 
It is just a copy.
         * <p>
         * Note: The component must have been added (directly or indirectly) to 
a container with an
         * associated markup file (Page, Panel or Border).
-        *
+        * 
         * @return markup attributes
         */
        public final ValueMap getMarkupAttributes()
@@ -1397,11 +1397,11 @@
         * <p>
         * Note: This method should only be called after the component or its 
parent have been added to
         * the page.
-        *
+        * 
         * @param createIfDoesNotExist
         *            When there is no existing markup id, determines whether 
it should be generated or
         *            whether <code>null</code> should be returned.
-        *
+        * 
         * @return markup id of the component
         */
 
@@ -1472,7 +1472,7 @@
         * <p>
         * Note: This method should only be called after the component or its 
parent have been added to
         * the page.
-        *
+        * 
         * @return markup id of the component
         */
        public String getMarkupId()
@@ -1482,7 +1482,7 @@
 
        /**
         * Gets metadata for this component using the given key.
-        *
+        * 
         * @param key
         *            The key for the data
         * @return The metadata or null of no metadata was found for the given 
key
@@ -1520,7 +1520,7 @@
 
        /**
         * Gets the model. It returns the object that wraps the backing model.
-        *
+        * 
         * @return The model
         */
        public final IModel getModel()
@@ -1539,7 +1539,7 @@
 
        /**
         * Gets the backing model object; this is shorthand for 
getModel().getObject().
-        *
+        * 
         * @return The backing model object
         */
        public final Object getModelObject()
@@ -1562,10 +1562,10 @@
         * sensitive chars are escaped but not all none-ascii chars. Proper 
HTML encoding should be used
         * instead. In case you really need a fully escaped model string you 
may call
         * [EMAIL PROTECTED] Strings#escapeMarkup(String, boolean, boolean)} on 
the model string returned.
-        *
+        * 
         * @see Strings#escapeMarkup(String, boolean, boolean)
         * @see #getEscapeModelStrings()
-        *
+        * 
         * @return Model object for this component as a string
         */
        public final String getModelObjectAsString()
@@ -1579,10 +1579,10 @@
         * sensitive chars are escaped but not all none-ascii chars. Proper 
HTML encoding should be used
         * instead. In case you really need a fully escaped model string you 
may call
         * [EMAIL PROTECTED] Strings#escapeMarkup(String, boolean, boolean)} on 
the model string returned.
-        *
+        * 
         * @see Strings#escapeMarkup(String, boolean, boolean)
         * @see #getEscapeModelStrings()
-        *
+        * 
         * @param modelObject
         *            Model object to convert to string
         * @return The string
@@ -1614,7 +1614,7 @@
        /**
         * Gets whether or not component will output id attribute into the 
markup. id attribute will be
         * set to the value returned from [EMAIL PROTECTED] 
Component#getMarkupId()}.
-        *
+        * 
         * @return whether or not component will output id attribute into the 
markup
         */
        public final boolean getOutputMarkupId()
@@ -1624,7 +1624,7 @@
 
        /**
         * Gets whether or not an invisible component will render a placeholder 
tag.
-        *
+        * 
         * @return true if a placeholder tag should be rendered
         */
        public final boolean getOutputMarkupPlaceholderTag()
@@ -1634,7 +1634,7 @@
 
        /**
         * Gets the page holding this component.
-        *
+        * 
         * @return The page holding this component
         * @throws IllegalStateException
         *             Thrown if component is not yet attached to a Page.
@@ -1664,7 +1664,7 @@
 
        /**
         * Gets the path to this component relative to the page it is in.
-        *
+        * 
         * @return The path to this component relative to the page it is in
         */
        public final String getPageRelativePath()
@@ -1674,7 +1674,7 @@
 
        /**
         * Gets any parent container, or null if there is none.
-        *
+        * 
         * @return Any parent container, or null if there is none
         */
        public final MarkupContainer getParent()
@@ -1684,7 +1684,7 @@
 
        /**
         * Gets this component's path.
-        *
+        * 
         * @return Colon separated path to this component in the component 
hierarchy
         */
        public final String getPath()
@@ -1704,7 +1704,7 @@
        /**
         * If false the component's tag will be printed as well as its body 
(which is default). If true
         * only the body will be printed, but not the component's tag.
-        *
+        * 
         * @return If true, the component tag will not be printed
         */
        public final boolean getRenderBodyOnly()
@@ -1729,7 +1729,7 @@
 
        /**
         * Gets the active request cycle for this component
-        *
+        * 
         * @return The request cycle
         */
        public final RequestCycle getRequestCycle()
@@ -1747,7 +1747,7 @@
 
        /**
         * Gets the current Session object.
-        *
+        * 
         * @return The Session that this component is in
         */
        public Session getSession()
@@ -1816,9 +1816,9 @@
 
        /**
         * Gets the style of this component (see [EMAIL PROTECTED] 
org.apache.wicket.Session}).
-        *
+        * 
         * @return The style of this component.
-        *
+        * 
         * @see org.apache.wicket.Session
         * @see org.apache.wicket.Session#getStyle()
         */
@@ -1844,7 +1844,7 @@
         * Gets the variation string of this component that will be used to 
look up markup for this
         * component. Subclasses can override this method to define by an 
instance what markup variation
         * should be picked up. By default it will return null or the value of 
a parent.
-        *
+        * 
         * @return The variation of this component.
         */
        public String getVariation()
@@ -1859,7 +1859,7 @@
 
        /**
         * Gets whether this component was rendered at least once.
-        *
+        * 
         * @return true if the component has been rendered before, false if it 
is merely constructed
         */
        public final boolean hasBeenRendered()
@@ -1885,7 +1885,7 @@
 
        /**
         * Registers an informational feedback message for this component
-        *
+        * 
         * @param message
         *            The feedback message
         */
@@ -1915,7 +1915,7 @@
 
        /**
         * Authorizes an action for a component.
-        *
+        * 
         * @param action
         *            The action to authorize
         * @return True if the action is allowed
@@ -1934,7 +1934,7 @@
 
        /**
         * Returns true if this component is an ancestor of the given component
-        *
+        * 
         * @param component
         *            The component to check
         * @return True if the given component has this component as an ancestor
@@ -1971,7 +1971,7 @@
         * Gets whether this component is enabled. Specific components may 
decide to implement special
         * behavior that uses this property, like web form components that add 
a disabled='disabled'
         * attribute when enabled is false.
-        *
+        * 
         * @return Whether this component is enabled.
         */
        public boolean isEnabled()
@@ -1982,7 +1982,7 @@
        /**
         * Checks the security strategy if the [EMAIL PROTECTED] 
Component#RENDER} action is allowed on this
         * component
-        *
+        * 
         * @return ture if [EMAIL PROTECTED] Component#RENDER} action is 
allowed, false otherwise
         */
        public final boolean isRenderAllowed()
@@ -1994,7 +1994,7 @@
         * Returns if the component is stateless or not. It checks the 
stateless hint if that is false
         * it returns directly false. If that is still true it checks all its 
behaviors if they can be
         * stateless.
-        *
+        * 
         * @return whether the component is stateless.
         */
        public final boolean isStateless()
@@ -2050,7 +2050,7 @@
         * method, it is a good idea to keep it cheap in terms of processing. 
Alternatively, you can
         * call [EMAIL PROTECTED] #setVisible(boolean)}.
         * <p>
-        *
+        * 
         * @return True if component and any children are visible
         */
        public boolean isVisible()
@@ -2060,7 +2060,7 @@
 
        /**
         * Checks if the component itself and all its parents are visible.
-        *
+        * 
         * @return true if the component and all its parents are visible.
         */
        public final boolean isVisibleInHierarchy()
@@ -2118,7 +2118,7 @@
 
        /**
         * Creates a new page using the component's page factory
-        *
+        * 
         * @param c
         *            The class of page to create
         * @return The new page
@@ -2130,7 +2130,7 @@
 
        /**
         * Creates a new page using the component's page factory
-        *
+        * 
         * @param c
         *            The class of page to create
         * @param parameters
@@ -2172,10 +2172,10 @@
         * is saved for future use by method continueToOriginalDestination(); 
Only use this method when
         * you plan to continue to the current url at some later time; 
otherwise just use
         * setResponsePage or - when you are in a constructor or 
checkAccessMethod, call redirectTo.
-        *
+        * 
         * @param page
         *            The sign in page
-        *
+        * 
         * @see Component#continueToOriginalDestination()
         */
        public final void redirectToInterceptPage(final Page page)
@@ -2199,10 +2199,10 @@
 
        /**
         * Removes behavior from component
-        *
+        * 
         * @param behavior
         *            behavior to remove
-        *
+        * 
         * @return this (to allow method call chaining)
         */
        public Component remove(final IBehavior behavior)
@@ -2267,7 +2267,7 @@
         * <p>
         * For component level re-render (e.g. AJAX) please call [EMAIL 
PROTECTED] #renderComponent(MarkupStream)}.
         * Though render() does seem to work, it will fail for panel children.
-        *
+        * 
         * @param markupStream
         */
        public final void render(final MarkupStream markupStream)
@@ -2426,7 +2426,7 @@
         * Renders the component at the current position in the given markup 
stream. The method
         * onComponentTag() is called to allow the component to mutate the 
start tag. The method
         * onComponentTagBody() is then called to permit the component to 
render its body.
-        *
+        * 
         * @param markupStream
         *            The markup stream
         */
@@ -2531,7 +2531,7 @@
         * NOT intended for overriding by framework clients. Rather, use
         * [EMAIL PROTECTED] 
IHeaderContributor#renderHead(org.apache.wicket.markup.html.IHeaderResponse)}
         * </p>
-        *
+        * 
         * @param container
         *            The HtmlHeaderContainer
         */
@@ -2567,9 +2567,9 @@
         * as this component. This method serves as a shortcut to
         * <code>this.getParent().replace(replacement)</code> and provides a 
better context for
         * errors.
-        *
+        * 
         * @since 1.2.1
-        *
+        * 
         * @param replacement
         *            component to replace this one
         */
@@ -2626,7 +2626,7 @@
        /**
         * Assigns a component border to this component. If called with 
<code>null</code> any previous
         * border will be cleared.
-        *
+        * 
         * @param border
         *            component border to assign, or <code>null</code> to clear 
any previous
         * @return component for chaining
@@ -2647,7 +2647,7 @@
         * attribute when enabled is false. If it is not enabled, it will not 
be allowed to call any
         * listener method on it (e.g. Link.onClick) and the model object will 
be protected (for the
         * common use cases, not for programmer's misuse)
-        *
+        * 
         * @param enabled
         *            whether this component is enabled
         * @return This
@@ -2675,7 +2675,7 @@
 
        /**
         * Sets whether model strings should be escaped.
-        *
+        * 
         * @param escapeMarkup
         *            True is model strings should be escaped
         * @return This
@@ -2712,9 +2712,9 @@
         * <p>
         * If null is passed in the user defined value is cleared and markup id 
value will fall back on
         * automatically generated value
-        *
+        * 
         * @see #getMarkupId()
-        *
+        * 
         * @param markupId
         *            markup id value or null to clear any previous user 
defined value
         */
@@ -2725,6 +2725,10 @@
                        throw new IllegalArgumentException("Markup id cannot be 
an empty string");
                }
 
+               // TODO check if an automatic id has already been generated or 
getmarkupid() called
+               // previously and throw an illegalstateexception because 
something else might be depending
+               // on previous id
+
                setMarkupIdImpl(markupId);
        }
 
@@ -2732,7 +2736,7 @@
         * Sets the metadata for this component using the given key. If the 
metadata object is not of
         * the correct type for the metadata key, an IllegalArgumentException 
will be thrown. For
         * information on creating MetaDataKeys, see [EMAIL PROTECTED] 
MetaDataKey}.
-        *
+        * 
         * @param key
         *            The singleton key for the metadata
         * @param object
@@ -2773,7 +2777,7 @@
         * WARNING: DO NOT OVERRIDE THIS METHOD UNLESS YOU HAVE A VERY GOOD 
REASON FOR IT. OVERRIDING
         * THIS MIGHT OPEN UP SECURITY LEAKS AND BREAK BACK-BUTTON SUPPORT.
         * </p>
-        *
+        * 
         * @param model
         *            The model
         * @return This
@@ -2847,7 +2851,7 @@
 
        /**
         * Sets the backing model object; shorthand for 
getModel().setObject(object).
-        *
+        * 
         * @param object
         *            The object to set
         * @return This
@@ -2883,13 +2887,13 @@
        /**
         * Sets whether or not component will output id attribute into the 
markup. id attribute will be
         * set to the value returned from [EMAIL PROTECTED] 
Component#getMarkupId()}.
-        *
+        * 
         * @param output
         *            True if the component will out the id attribute into 
markup. Please note that the
         *            default behavior is to use the same id as the component. 
This means that your
         *            component must begin with [a-zA-Z] in order to generate a 
valid markup id
         *            according to: 
http://www.w3.org/TR/html401/types.html#type-name
-        *
+        * 
         * @return this for chaining
         */
        public final Component setOutputMarkupId(final boolean output)
@@ -2902,15 +2906,15 @@
         * Render a placeholder tag when the component is not visible. The tag 
is of form:
         * &lt;componenttag style="display:none;" id="componentid"/&gt;. This 
method will also call
         * <code>setOutputMarkupId(true)</code>.
-        *
+        * 
         * This is useful, for example, in ajax situations where the component 
starts out invisible and
         * then becomes visible through an ajax update. With a placeholder tag 
already in the markup you
         * do not need to repaint this component's parent, instead you can 
repaint the component
         * directly.
-        *
+        * 
         * When this method is called with parameter <code>false</code> the 
outputmarkupid flag is not
         * reverted to false.
-        *
+        * 
         * @param outputTag
         * @return this for chaining
         */
@@ -2946,7 +2950,7 @@
        /**
         * If false the component's tag will be printed as well as its body 
(which is default). If true
         * only the body will be printed, but not the component's tag.
-        *
+        * 
         * @param renderTag
         *            If true, the component tag will not be printed
         * @return This
@@ -2959,7 +2963,7 @@
 
        /**
         * Sets the page that will respond to this request
-        *
+        * 
         * @param cls
         *            The response page class
         * @see RequestCycle#setResponsePage(Class)
@@ -2972,7 +2976,7 @@
 
        /**
         * Sets the page class and its parameters that will respond to this 
request
-        *
+        * 
         * @param cls
         *            The response page class
         * @param parameters
@@ -2986,7 +2990,7 @@
 
        /**
         * Sets the page that will respond to this request
-        *
+        * 
         * @param page
         *            The response page
         * @see RequestCycle#setResponsePage(Page)
@@ -3010,7 +3014,7 @@
 
        /**
         * Sets whether this component and any children are visible.
-        *
+        * 
         * @param visible
         *            True if this component and any children should be visible
         * @return This
@@ -3031,7 +3035,7 @@
 
        /**
         * Gets the string representation of this component.
-        *
+        * 
         * @return The path to this component
         */
        public String toString()
@@ -3082,9 +3086,9 @@
         * Returns a bookmarkable URL that references a given page class using 
a given set of page
         * parameters. Since the URL which is returned contains all information 
necessary to instantiate
         * and render the page, it can be stored in a user's browser as a 
stable bookmark.
-        *
+        * 
         * @see RequestCycle#urlFor(IPageMap, Class, PageParameters)
-        *
+        * 
         * @param pageClass
         *            Class of page
         * @param parameters
@@ -3099,7 +3103,7 @@
        /**
         * Gets a URL for the listener interface on a behavior (e.g. 
IBehaviorListener on
         * AjaxPagingNavigationBehavior).
-        *
+        * 
         * @param behaviour
         *            The behavior that the URL should point to
         * @param listener
@@ -3116,17 +3120,17 @@
         * Returns a bookmarkable URL that references a given page class using 
a given set of page
         * parameters. Since the URL which is returned contains all information 
necessary to instantiate
         * and render the page, it can be stored in a user's browser as a 
stable bookmark.
-        *
+        * 
         * @see RequestCycle#urlFor(IPageMap, Class, PageParameters)
-        *
+        * 
         * @param pageMap
         *            Page map to use
         * @param pageClass
         *            Class of page
         * @param parameters
         *            Parameters to page
-        *
-        *
+        * 
+        * 
         * @return Bookmarkable URL to page
         */
        public final CharSequence urlFor(final IPageMap pageMap, final Class 
pageClass,
@@ -3137,12 +3141,12 @@
 
        /**
         * Returns a URL that references the given request target.
-        *
+        * 
         * @see RequestCycle#urlFor(IRequestTarget)
-        *
+        * 
         * @param requestTarget
         *            the request target to reference
-        *
+        * 
         * @return a URL that references the given request target
         */
        public final CharSequence urlFor(final IRequestTarget requestTarget)
@@ -3152,7 +3156,7 @@
 
        /**
         * Gets a URL for the listener interface (e.g. ILinkListener).
-        *
+        * 
         * @param listener
         *            The listener interface that the URL should call
         * @return The URL
@@ -3164,9 +3168,9 @@
 
        /**
         * Returns a URL that references a shared resource through the provided 
resource reference.
-        *
+        * 
         * @see RequestCycle#urlFor(ResourceReference)
-        *
+        * 
         * @param resourceReference
         *            The resource reference
         * @return The url for the shared resource
@@ -3179,7 +3183,7 @@
        /**
         * Traverses all parent components of the given class in this 
container, calling the visitor's
         * visit method at each one.
-        *
+        * 
         * @param c
         *            Class
         * @param visitor
@@ -3212,7 +3216,7 @@
 
        /**
         * Registers a warning feedback message for this component.
-        *
+        * 
         * @param message
         *            The feedback message
         */
@@ -3265,7 +3269,7 @@
 
        /**
         * Adds state change to page.
-        *
+        * 
         * @param change
         *            The change
         */
@@ -3281,7 +3285,7 @@
 
        /**
         * Checks whether the given type has the expected name.
-        *
+        * 
         * @param tag
         *            The tag to check
         * @param name
@@ -3301,7 +3305,7 @@
 
        /**
         * Checks that a given tag has a required attribute value.
-        *
+        * 
         * @param tag
         *            The tag
         * @param key
@@ -3329,7 +3333,7 @@
        /**
         * Checks whether the hierarchy may be changed at all, and throws an 
exception if this is not
         * the case.
-        *
+        * 
         * @param component
         *            the component which is about to be added or removed
         */
@@ -3363,7 +3367,7 @@
 
        /**
         * Prefixes an exception message with useful information about this. 
component.
-        *
+        * 
         * @param message
         *            The message
         * @return The modified message
@@ -3375,7 +3379,7 @@
 
        /**
         * Finds the markup stream for this component.
-        *
+        * 
         * @return The markup stream for this component. Since a Component 
cannot have a markup stream,
         *         we ask this component's parent to search for it.
         */
@@ -3393,7 +3397,7 @@
        /**
         * If this Component is a Page, returns self. Otherwise, searches for 
the nearest Page parent in
         * the component hierarchy. If no Page parent can be found, null is 
returned.
-        *
+        * 
         * @return The Page or null if none can be found
         */
        protected final Page findPage()
@@ -3406,10 +3410,10 @@
         * Gets the subset of the currently coupled [EMAIL PROTECTED] 
IBehavior}s that are of the provided type as
         * a unmodifiable list or null if there are no behaviors attached. 
Returns an empty list rather
         * than null if there are no behaviors coupled to this component.
-        *
+        * 
         * @param type
         *            The type or null for all
-        *
+        * 
         * @return The subset of the currently coupled behaviors that are of 
the provided type as a
         *         unmodifiable list or null
         */
@@ -3435,7 +3439,7 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
-        *
+        * 
         * @param flag
         *            The flag to test
         * @return True if the flag is set
@@ -3447,7 +3451,7 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
-        *
+        * 
         * @param flag
         *            The flag to test
         * @return True if the flag is set
@@ -3459,7 +3463,7 @@
 
        /**
         * Finds the innermost IModel object for an IModel that might contain 
nested IModel(s).
-        *
+        * 
         * @param model
         *            The model
         * @return The innermost (most nested) model
@@ -3483,7 +3487,7 @@
         * Gets the value defaultModelComparator. Implementations of this 
interface can be used in the
         * Component.getComparator() for testing the current value of the 
components model data with the
         * new value that is given.
-        *
+        * 
         * @return the value defaultModelComparator
         */
        protected IModelComparator getModelComparator()
@@ -3496,7 +3500,7 @@
         * stateless, otherwise the component will be treat as stateful. In 
order for page to be
         * stateless (and not to be stored in session), all components (and 
component behaviors) must be
         * stateless.
-        *
+        * 
         * @return whether the component can be stateless
         */
        protected boolean getStatelessHint()
@@ -3508,7 +3512,7 @@
         * Called when a null model is about to be retrieved in order to allow 
a subclass to provide an
         * initial model. This gives FormComponent, for example, an opportunity 
to instantiate a model
         * on the fly using the containing Form's model.
-        *
+        * 
         * @return The model
         */
        protected IModel initModel()
@@ -3542,9 +3546,9 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
-        *
+        * 
         * Called when a request begins.
-        *
+        * 
         * @Deprecated use [EMAIL PROTECTED] #onBeforeRender()} instead
         */
        protected final void internalOnAttach()
@@ -3553,11 +3557,11 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
-        *
+        * 
         * Called when a request ends.
-        *
+        * 
         * @Deprecated use [EMAIL PROTECTED] #onBeforeRender()} instead
-        *
+        * 
         */
        protected final void internalOnDetach()
        {
@@ -3565,7 +3569,7 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL OR 
OVERRIDE.
-        *
+        * 
         * Called anytime a model is changed via setModel or setModelObject.
         */
        protected void internalOnModelChanged()
@@ -3574,7 +3578,7 @@
 
        /**
         * Convenience method that sets the attached flags.
-        *
+        * 
         * @param attached
         */
        protected final void markAttached(boolean attached)
@@ -3592,7 +3596,7 @@
 
        /**
         * Components are allowed to reject behavior modifiers.
-        *
+        * 
         * @param behavior
         * @return False, if the component should not apply this behavior
         */
@@ -3610,7 +3614,7 @@
 
        /**
         * If true, all attribute modifiers will be ignored
-        *
+        * 
         * @return True, if attribute modifiers are to be ignored
         */
        protected final boolean isIgnoreAttributeModifier()
@@ -3643,7 +3647,7 @@
         * <p>
         * If you need to get notification when page is taken out of Session 
(before calling the event
         * listener), you can use the [EMAIL PROTECTED] Page#onPageAttached()} 
method.
-        *
+        * 
         * @deprecated
         */
        protected final void onAttach()
@@ -3656,11 +3660,11 @@
         * <p>
         * *NOTE* If you override this, you *must* call super.onBeforeRender() 
within your
         * implementation.
-        *
+        * 
         * Because this method is responsible for cascading [EMAIL PROTECTED] 
#onBeforeRender()} call to its
         * children it is strongly recommended that super call is made at the 
end of the override.
         * </p>
-        *
+        * 
         * @see Component#callOnBeforeRenderIfNotVisible()
         */
        protected void onBeforeRender()
@@ -3673,10 +3677,10 @@
        /**
         * Override this method if you want onBeforeRender to be called even 
when your component is not
         * visible. default this returns false.
-        *
+        * 
         * @return boolean, if true then onBeforeRender is called even for none 
visible components,
         *         default false.
-        *
+        * 
         * @see Component#onBeforeRender()
         */
        protected boolean callOnBeforeRenderIfNotVisible()
@@ -3695,7 +3699,7 @@
 
        /**
         * Processes the component tag.
-        *
+        * 
         * @param tag
         *            Tag to modify
         */
@@ -3713,7 +3717,7 @@
 
        /**
         * Processes the body.
-        *
+        * 
         * @param markupStream
         *            The markup stream
         * @param openTag
@@ -3725,11 +3729,11 @@
 
        /**
         * Called to allow a component to detach resources after use.
-        *
+        * 
         * Overrides of this method MUST call the super implementation, the 
most logical place to do
         * this is the last line of the override method.
-        *
-        *
+        * 
+        * 
         */
        protected void onDetach()
        {
@@ -3762,7 +3766,7 @@
 
        /**
         * Implementation that renders this component.
-        *
+        * 
         * @since Wicket 1.2
         * @param markupStream
         */
@@ -3772,7 +3776,7 @@
         * Writes a simple tag out to the response stream. Any components that 
might be referenced by
         * the tag are ignored. Also undertakes any tag attribute modifications 
if they have been added
         * to the component.
-        *
+        * 
         * @param tag
         *            The tag to write
         */
@@ -3823,7 +3827,7 @@
 
        /**
         * Replaces the body with the given one.
-        *
+        * 
         * @param markupStream
         *            The markup stream to replace the tag body in
         * @param tag
@@ -3888,7 +3892,7 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
-        *
+        * 
         * @param flag
         *            The flag to set
         * @param set
@@ -3908,7 +3912,7 @@
 
        /**
         * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
-        *
+        * 
         * @param flag
         *            The flag to set
         * @param set
@@ -3921,7 +3925,7 @@
 
        /**
         * If true, all attribute modifiers will be ignored
-        *
+        * 
         * @param ignore
         *            If true, all attribute modifiers will be ignored
         * @return This
@@ -3935,10 +3939,10 @@
        /**
         * The markup stream will be assigned to the component at the beginning 
of the component render
         * phase. It is temporary working variable only.
-        *
+        * 
         * @see #findMarkupStream()
         * @see MarkupContainer#getMarkupStream()
-        *
+        * 
         * @param markupStream
         *            The current markup stream which should be applied by the 
component to render
         *            itself
@@ -3973,7 +3977,7 @@
 
        /**
         * Gets the component at the given path.
-        *
+        * 
         * @param path
         *            Path to component
         * @return The component at the path
@@ -3993,7 +3997,7 @@
        /**
         * Checks whether or not this component has a markup id value 
generated, whether it is automatic
         * or user defined
-        *
+        * 
         * @return true if this component has a markup id value generated
         */
        final boolean hasMarkupIdMetaData()
@@ -4044,7 +4048,7 @@
 
        /**
         * Renders the close tag at the current position in the markup stream.
-        *
+        * 
         * @param markupStream
         *            the markup stream
         * @param openTag
@@ -4094,7 +4098,7 @@
        /**
         * Sets the id of this component. This method is private because the 
only time a component's id
         * can be set is in its constructor.
-        *
+        * 
         * @param id
         *            The non-null id of this component
         */
@@ -4109,7 +4113,7 @@
 
        /**
         * Sets the parent of a component.
-        *
+        * 
         * @param parent
         *            The parent container
         */
@@ -4124,7 +4128,7 @@
 
        /**
         * Sets the render allowed flag.
-        *
+        * 
         * @param renderAllowed
         */
        final void setRenderAllowed(boolean renderAllowed)
@@ -4134,7 +4138,7 @@
 
        /**
         * Sets the render allowed flag.
-        *
+        * 
         * Visit all this page's children (overridden in MarkupContainer) to 
check rendering
         * authorization, as appropriate. We set any result; positive or 
negative as a temporary boolean
         * in the components, and when a authorization exception is thrown it 
will block the rendering


Reply via email to