Application adds a ComponentInstantiationListener that I don't want and can't
remove
------------------------------------------------------------------------------------
Key: WICKET-2118
URL: https://issues.apache.org/jira/browse/WICKET-2118
Project: Wicket
Issue Type: Improvement
Components: wicket
Affects Versions: 1.4-M3
Environment: OS X 10.5.6, Java 1.5.0_16
Reporter: Willis Blackburn
I am writing a unit test that requires that I instantiate a Component. When I
instantiated the Component, I discovered that it requires an Application
attached to the current thread. No problem: I instantiated the Application
and set it in the thread using Application.set.
However, at this point I saw the following error:
"java.lang.IllegalStateException: you can only locate or create sessions in the
context of a request cycle."
The problem is that Application, in its constructor, adds a component
instantiation listener that delegates the discovery of the authorization
strategy to the session, and if the session isn't present, it wants to create
one. I tried setting up a session, but that requires a request cycle, which
requires a request and response, etc.
I see two issues here:
1. Application creates a component instantiation listener that cannot be
removed. The only way to remove it is to have a reference to the listener and
pass it to removeComponentInstantiationListener, but the listener is created
anonymously inside the Application constructor.
This could be solved by creating a method called something like
initializeDefaultComponentInstantiationListeners that a subclass could override
with a no-op.
2. The listener that Application creates always creates a Session, even though
Session's default implementation of the method that Application calls just
delegates back to Application.
This issue could be resolved by the solution to #1, since applications that
know that they're not going to override the authorization strategy on a
per-session basis could add an authorization listener that didn't create a
session.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.