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
- mentioned in
-
Page Loading...