[jira] Created: (JCR-1597) JCARepositoryHandle.login(...) methods never throw NoSuchWorkspaceException

View: New views
2 Messages — Rating Filter:   Alert me  

[jira] Created: (JCR-1597) JCARepositoryHandle.login(...) methods never throw NoSuchWorkspaceException

by JIRA jira@apache.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.


[jira] Updated: (JCR-1597) JCARepositoryHandle.login(...) methods never throw NoSuchWorkspaceException

by JIRA jira@apache.org :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


     [ 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.