Thanks a lot for the help Christoph!  Your code worked.  This will really get
my unit tests going.  Thanks again.



Christoph Kiehl-3 wrote:
> 
> 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());
>       }
> }
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Junit-testing-with-Jackrabbit-using-AbstractDependencyInjectionSpringContextTests-tf4111862.html#a11708893
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.

Reply via email to