use of javax.jcr.Repository in project jackrabbit-oak by apache.
the class OakOSGiRepositoryFactoryTest method testRepositoryTar.
@Test
public void testRepositoryTar() throws Exception {
copyConfig("tar");
config.put(BundleActivator.class.getName(), new TestActivator());
Repository repository = repositoryFactory.getRepository(config);
assertTrue("test activator should have been called on startup", calledOnStart);
//Give time for system to stablize :(
TimeUnit.SECONDS.sleep(1);
assertNotNull(repository);
System.out.println("Repository started ");
basicCrudTest(repository);
//For now SecurityConfig is giving some issue
//so disable that
testCallback(repository);
shutdown(repository);
assertTrue("test activator should have been called on stop", calledOnStop);
}
use of javax.jcr.Repository in project sling by apache.
the class SlingDavExServlet method getSessionProvider.
@Override
protected SessionProvider getSessionProvider() {
return new SessionProvider() {
public Session getSession(final HttpServletRequest req, final Repository repository, final String workspace) throws LoginException, RepositoryException, ServletException {
final ResourceResolver resolver = (ResourceResolver) req.getAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_RESOLVER);
if (resolver != null) {
final Session session = resolver.adaptTo(Session.class);
if (session != null) {
final Session newSession = getLongLivedSession(session);
log.debug("getSession: Creating new Session ({}) for {}", newSession, newSession.getUserID());
return newSession;
}
}
throw new ServletException("ResourceResolver missing or not providing on JCR Session");
}
public void releaseSession(final Session session) {
log.debug("releaseSession: Logging out long lived Session ({})", session);
session.logout();
}
/**
* Creates a new session for the user of the slingSession in the
* same workspace as the slingSession.
* <p>
* Assumption: The admin session has permission to impersonate
* as any user without restriction. If this is not the case
* the Session.impersonate method throws a LoginException
* which is folded into a RepositoryException.
*
* @param slingSession The session provided by the Sling
* authentication mechanis,
* @return a new session which may (and will) outlast the request
* @throws RepositoryException If an error occurrs creating the
* session.
*/
private Session getLongLivedSession(final Session slingSession) throws RepositoryException {
Session adminSession = null;
final String user = slingSession.getUserID();
try {
final SimpleCredentials credentials = new SimpleCredentials(user, EMPTY_PW);
final String wsp = slingSession.getWorkspace().getName();
adminSession = SlingDavExServlet.this.repository.loginAdministrative(wsp);
return adminSession.impersonate(credentials);
} catch (RepositoryException re) {
// cause a 403/FORBIDDEN response
throw new RepositoryException("Cannot get session for " + user, re);
} finally {
if (adminSession != null) {
adminSession.logout();
}
}
}
};
}
use of javax.jcr.Repository in project sling by apache.
the class AbstractSlingRepository2 method getDescriptor.
// Remaining Repository service methods all backed by the actual
// repository instance. They may be overwritten, but generally are not.
@Override
public String getDescriptor(String name) {
Repository repo = getRepository();
if (repo != null) {
return repo.getDescriptor(name);
}
logger.error("getDescriptor: Repository not available");
return null;
}
use of javax.jcr.Repository in project sling by apache.
the class AbstractSlingRepository2 method getDescriptorValue.
@Override
public Value getDescriptorValue(String key) {
Repository repo = getRepository();
if (repo != null) {
return repo.getDescriptorValue(key);
}
logger.error("getDescriptorValue: Repository not available");
return null;
}
use of javax.jcr.Repository in project sling by apache.
the class AbstractSlingRepository2 method isSingleValueDescriptor.
@Override
public boolean isSingleValueDescriptor(String key) {
Repository repo = getRepository();
if (repo != null) {
return repo.isSingleValueDescriptor(key);
}
logger.error("isSingleValueDescriptor: Repository not available");
return false;
}
Aggregations