[ 
https://issues.apache.org/jira/browse/JCR-1597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Puchkovskiy updated JCR-1597:
-----------------------------------

    Attachment: JCR-1597.patch

Attaching proposed patch. This just uses ResourceException(String, Throwable) 
constructor. Not sure, is this correct, please review.

> 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
>         Attachments: JCR-1597.patch
>
>
> 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.

Reply via email to