You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Cory Prowse (JIRA)" <ji...@apache.org> on 2010/08/06 20:37:16 UTC

[jira] Commented: (JCR-2701) createWorkspace throws PathNotFoundException

    [ https://issues.apache.org/jira/browse/JCR-2701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12896113#action_12896113 ] 

Cory Prowse commented on JCR-2701:
----------------------------------

As requested by Alexander Klimetschek, here is a code sample for attempting to create the new workspace using a fresh session:

---
package au.jcr;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
import javax.jcr.ItemExistsException;
import javax.jcr.LoginException;
import javax.jcr.NoSuchWorkspaceException;
import javax.jcr.PathNotFoundException;
import javax.jcr.ReferentialIntegrityException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.VersionException;

@Startup
@Singleton
public class JcrStartupSingleton {

    @Resource(name = "jcr/repository", type = javax.jcr.Repository.class)
    private Repository repository;

    @PostConstruct
    public void setupWorkspaces() throws RepositoryException {
        addExampleNodeToProductionWorkspace();

        createStagingWorkspaceFromProductionWorkspace();
    }

    private void addExampleNodeToProductionWorkspace() throws LoginException, NoSuchWorkspaceException, RepositoryException,
            ItemExistsException, PathNotFoundException, VersionException, ConstraintViolationException, LockException,
            AccessDeniedException, ReferentialIntegrityException, InvalidItemStateException, NoSuchNodeTypeException {
        final Session session = repository.login(new SimpleCredentials("admin1", "".toCharArray()), "production");
        try {
            session.getRootNode().addNode("example");
            session.save();
        } finally {
            session.logout();
        }
    }

    private void createStagingWorkspaceFromProductionWorkspace() throws LoginException, NoSuchWorkspaceException,
            RepositoryException, AccessDeniedException, UnsupportedRepositoryOperationException {
        final Session freshSession = repository.login(new SimpleCredentials("admin1", "".toCharArray()), "production");
        try {
            // Exception is thrown here (is line 55)
            freshSession.getWorkspace().createWorkspace("staging", "production");
        } finally {
            freshSession.logout();
        }
    }
}
---

(Exact same exception as before but on line 55 of JcrStartupSingleton)

> createWorkspace throws PathNotFoundException
> --------------------------------------------
>
>                 Key: JCR-2701
>                 URL: https://issues.apache.org/jira/browse/JCR-2701
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.1.0
>         Environment: Jackrabbit is deployed using released JCA on Glassfish 3.0.1
>            Reporter: Cory Prowse
>
> The following code throws a PathNotFoundException:
> ---
> package au.jcr;
> import javax.annotation.PostConstruct;
> import javax.annotation.Resource;
> import javax.ejb.Singleton;
> import javax.ejb.Startup;
> import javax.jcr.Repository;
> import javax.jcr.RepositoryException;
> import javax.jcr.Session;
> import javax.jcr.SimpleCredentials;
> @Startup
> @Singleton
> public class JcrStartupSingleton {
>     @Resource(name = "jcr/repository", type = javax.jcr.Repository.class)
>     private Repository repository;
>     @PostConstruct
>     public void setupWorkspaces() throws RepositoryException {
>         final Session session = repository.login(new SimpleCredentials("admin", "".toCharArray()), "production");
>         try {
>             session.getRootNode().addNode("example");
>             session.save();
>             // Exception is thrown here (is line 27)
>             session.getWorkspace().createWorkspace("staging", "production");
>         } finally {
>             session.logout();
>         }
>     }
> }
> ---
> javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton JcrStartupSingleton
>         at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:698)
> ...
> Caused by: javax.ejb.CreateException: Initialization failed for Singleton JcrStartupSingleton
>         at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:528)
> ...
> Caused by: javax.jcr.PathNotFoundException: /example
>         at org.apache.jackrabbit.core.BatchedItemOperations.getNodeState(BatchedItemOperations.java:1456)
>         at org.apache.jackrabbit.core.BatchedItemOperations.copy(BatchedItemOperations.java:387)
>         at org.apache.jackrabbit.core.WorkspaceImpl.internalCopy(WorkspaceImpl.java:404)
>         at org.apache.jackrabbit.core.WorkspaceImpl.clone(WorkspaceImpl.java:606)
>         at org.apache.jackrabbit.core.WorkspaceImpl.createWorkspace(WorkspaceImpl.java:221)
>         at au.jcr.JcrStartupSingleton.setupWorkspaces(JcrStartupSingleton.java:27)
> ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.