JCARepositoryHandle.login(...) methods never throw NoSuchWorkspaceException
---------------------------------------------------------------------------
Key: JCR-1597
URL: https://issues.apache.org/jira/browse/JCR-1597
Project: Jackrabbit
Issue Type: Bug
Components: jackrabbit-jca
Affects Versions: 1.4
Reporter: Roman Puchkovskiy
Call sequence:
JCARepositoryHandle.login(Credentials, String) // (here non-existent
workspace is specified for login)
JCARepositoryHandle.login(JCAConnectionRequestInfo)
ConnectionManager.allocateConnection(ManagedConnectionFactory,
ConnectionRequestInfo)
...
JCAManagedConnection.openSession(JCAConnectionRequestInfo)
Repository.login(Credentials, String) // here
NoSuchWorkspaceException is thrown, catched by
JCAManagedConnection.openSession(JCAConnectionRequestInfo), _set as
linkedException_ to ResourceException, which is thrown
...
Here (in JCARepositoryHandle.login(JCAConnectionRequestInfo))
ResourceException is caught, its _cause_ is retreived, and, if cause is
NoSuchWorkspaceException, it's thrown, else another exception is thrown.
Note, that when exception occures on lower level, it's wrapped in
ResourceException using setLinkedException(), but on upper level it's unwrapped
using getCause(). But cause is not set by anyone, it's null, so
NoSuchWorkspaceException is never thrown here.
Suggested fix is to use same mechanism on both ends: either change wrapping
mechanism to exception chaining (new ResourceException(msg, cause)), or unwrap
using ResourceException.getLinkedException().
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.