package play.modules.cream.helpers; import javax.jcr.Credentials; import javax.jcr.LoginException; import javax.jcr.NoSuchWorkspaceException; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.core.RepositoryImpl; import play.exceptions.UnexpectedException; /** * Jcr repository helper */ public class JcrRepositoryHelper { /** * The loaded repository. */ public static Repository repository = null; public static Credentials defaultCredentials; public static String defaultWorkspace; public static Session openSession() { return openSession(defaultCredentials, defaultWorkspace); } /** * Open a session for the current thread. * * @return A valid JCR session */ public static Session openSession(Credentials credentials, String workspace) { Session session; try { session = repository.login(credentials, workspace); } catch (LoginException e) { throw new UnexpectedException(e); } catch (NoSuchWorkspaceException e) { throw new UnexpectedException(e); } catch (RepositoryException e) { throw new UnexpectedException(e); } return session; } public static Session openSession(SimpleCredentials credentials) { return openSession(credentials, defaultWorkspace); } public static Session openSession(String workspace) { return openSession(defaultCredentials, workspace); } public static void shutdown() { if (RepositoryImpl.class.isAssignableFrom(repository.getClass())) { ((RepositoryImpl) repository).shutdown(); } } }