package au.com.infomedix.jcrloadtest.jcrserver.repo; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.modeshape.common.collection.Problems; import org.modeshape.jcr.ModeShapeEngine; import org.modeshape.jcr.RepositoryConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import au.com.infomedix.jcrloadtest.common.nodemodel.Node; import javax.jcr.LoginException; import javax.jcr.NodeIterator; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.Workspace; import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.NodeTypeIterator; import javax.jcr.nodetype.NodeTypeManager; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; import javax.jcr.query.QueryResult; import javax.naming.InitialContext; import javax.naming.NamingException; import junit.framework.TestCase; /** * Service providing access to the JCR Repository. */ public class JcrServiceTest extends TestCase { public void testQuery() throws Exception { // Create and start the engine ... ModeShapeEngine engine = new ModeShapeEngine(); engine.start(); RepositoryConfiguration config = RepositoryConfiguration.read("testRepo.json"); Problems problems = config.validate(); if(problems.hasErrors()) { fail("Problems starting the engine " + problems); } Repository repository = engine.deploy(config); // Repository repository = engine.getRepository("TestRepo"); Session session = repository.login(); System.out.println("Registering the JCR schema."); org.modeshape.jcr.api.nodetype.NodeTypeManager ntm = (org.modeshape.jcr.api.nodetype.NodeTypeManager) session.getWorkspace().getNodeTypeManager(); InputStream schemaStream = this.getClass().getResourceAsStream("/testSchema.cnd"); ntm.registerNodeTypes(schemaStream, true); System.out.println("Completed Registeration the JCR schema."); QueryManager queryManager = session.getWorkspace().getQueryManager(); Query query = queryManager.createQuery("select * from [inf:episode] as e join [inf:patient] as p on isdescendantnode(e,p) where p.[inf:masterId] = '00000000'", Query.JCR_SQL2); QueryResult result = query.execute(); NodeIterator it = result.getNodes(); assertEquals(0L, it.getSize()); session.logout(); } }