jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christoph Kiehl <christ...@sulu3000.de>
Subject Re: Junit testing with Jackrabbit using AbstractDependencyInjectionSpringContextTests
Date Thu, 19 Jul 2007 20:52:48 GMT
bilobag wrote:

> Ok, i think my issue is that I have the
> org.springmodules.jcr.support.OpenSessionInViewFilter configured in my
> web.xml which is supposed to keep my repository session open.  My dao mainly
> just uses the jcrTemplate methods to access the repository.  I believe the
> template opens and closes the session.  Does anyone know of a way to keep it
> open during my entire test case?   

I just copied some code from OpenSessionInViewFilter to put together a quick and 
dirty solution. I'm using transactions and therefore have a threadbound session 
available anyway. There might be a cleaner solution but this one should work for 
now.

Cheers,
Christoph

ps: Just post such questions to the user list next time. Most developers read 
both lists anyway.

=======

package com.subshell.sophora.server.persistence.jcr;

import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jackrabbit.JcrConstants;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springmodules.jcr.JcrTemplate;
import org.springmodules.jcr.SessionFactory;
import org.springmodules.jcr.SessionFactoryUtils;

public class NodeServiceTests extends
		AbstractDependencyInjectionSpringContextTests {

	protected static final Log log = LogFactory.getLog(NodeServiceTests.class);

	protected JcrTemplate jcrTemplate;

	private SessionFactory sf;

	private Session session;

	public JcrTemplate getJcrTemplate() {
		return jcrTemplate;
	}

	public void setJcrTemplate(JcrTemplate jcrTemplate) {
		this.jcrTemplate = jcrTemplate;
	}

	public NodeServiceTests() {
		super();
		setAutowireMode(AUTOWIRE_BY_NAME);
	}

	@Override
	protected String[] getConfigLocations() {
		return new String[] { "classpath:WEB-INF/applicationContext.xml" };
	}

	@Override
	protected void onSetUp() throws Exception {
		super.onSetUp();
		sf = jcrTemplate.getSessionFactory();
		session = SessionFactoryUtils.getSession(sf, true);
		TransactionSynchronizationManager.bindResource(sf,
				sf.getSessionHolder(session));
	}

	@Override
	protected void onTearDown() throws Exception {
		TransactionSynchronizationManager.unbindResource(sf);
		SessionFactoryUtils.releaseSession(session, sf);
		super.onTearDown();
	}

	public void testGetAllFiles() throws RepositoryException {
		Node addNode = jcrTemplate.getRootNode().addNode("test");
		addNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
		String uuid = addNode.getUUID();

		Node nodeByUUID = jcrTemplate.getNodeByUUID(uuid);
		assertEquals(JcrConstants.MIX_REFERENCEABLE,
				nodeByUUID.getMixinNodeTypes()[0].getName());
	}
}



Mime
View raw message