Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-6137

ListenerInterfaceRequestHandler simplification

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 8.0.0-M1
    • 8.0.0-M1
    • wicket
    • None

    Description

      Branch "request_listener_simplification" contains a proposal to simplify ListenerInterfaceRequestHandler.

      By limiting components and behaviors to implement a single callback only, we can remove the identifying part "I*Listener" from URLs.
      For page 0, renderCount 1 and behavior 2 the following componentInfos:

      0-1.ILinkListener-link
      0-1.ILinkListener.2-link
      0-IResourceListener-image
      0-IResourceListener.2-wmc

      ... become:

      0-1.-link
      0-1.2-link
      0--image
      0-.2-wmc

      This format could be further improved, suggestions are welcomed.

      This has the following advantages:

      • framework exposure in URLs is minimized
      • URLs get shorter
      • no need to register INTERFACE constants any longer
      • instead using of reflection ListenerInterfaceRequestHandler can call a single method on the component or behavior, which makes debugging easier.
      • a single interface for components or behavior is enough to be targeted by requests:
      	public interface IRequestListener extends IClusterable
      	{
      
      		/**
      		 * Does invocation of this listener render the page. 
      		 * 
      		 * @return default {@code true}, i.e. a {@link RenderPageRequestHandler} is scheduled after invocation 
      		 */
      		default boolean rendersPage()
      		{
      			return true;
      		}
      	
      		/**
      		 * Called when a request is received.
      		 */
      		void onRequest();
      	}
      

      Attachments

        Issue Links

          Activity

            People

              svenmeier Sven Meier
              svenmeier Sven Meier
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: