public void create( Node parentNode, String childName ) throws RepositoryException { Session session = (Session)parentNode.getSession(); FederationManager fedMgr = session.getWorkspace().getFederationManager(); fedMgr.createProjection(parentNode.getPath(), getName(), "/", childName); }
RepositoryManager repositoryManager = ((org.modeshape.jcr.api.Workspace)session.getWorkspace()).getRepositoryManager(); repositoryManager.backupRepository(backup, options); final String backupURL;
private void ensureIndexes(Session session) throws RepositoryException { Workspace workspace = (Workspace) session.getWorkspace(); log.info("Indexing users and groups"); workspace.reindex("/users"); log.info("Finished indexing users"); workspace.reindex("/groups"); log.info("Finished indexing groups"); }
@Test public void shouldNotIndexNotQueryableDocument() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.NONT_QUERYABLE_DOC_LOCATION, "nonQueryableDoc"); Workspace workspace = session.getWorkspace(); workspace.reindex(); Node externalNode = assertNodeFound("/testRoot/nonQueryableDoc"); QueryManager queryManager = workspace.getQueryManager(); Query query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/nonQueryableDoc'", Query.JCR_SQL2); validateQuery().rowCount(0).validate(query, query.execute()); // change the document and re-run the query externalNode.setProperty("test", "a value"); session.save(); validateQuery().rowCount(0).validate(query, query.execute()); }
wsA.getNamespaceRegistry().registerNamespace("brix", "http://brix-cms.googlecode.com"); wsB.getNamespaceRegistry().registerNamespace("brix", "http://brix-cms.googlecode.com"); wsC.getNamespaceRegistry().registerNamespace("brix", "http://brix-cms.googlecode.com"); wsB.getSession().removeItem(root); wsB.getSession().save(); wsB.clone(workspaceA, root, root, true); wsB.getSession().save(); wsC.getSession().removeItem(root); wsC.getSession().save(); wsC.clone(workspaceB, root, root, true); wsC.getSession().save();
protected static void registerNodeTypes( Session session, String pathToClasspathResource ) throws RepositoryException, IOException { URL url = resourceUrl(pathToClasspathResource); session.getWorkspace().getNodeTypeManager().registerNodeTypes(url, true); }
@Test public void shouldMoveExternalNode() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); Node doc1Federated = session.getNode("/testRoot/federated1"); Node parent1 = doc1Federated.addNode("parent1", null); parent1.addNode("child1"); parent1.addNode("childX"); parent1.addNode("child2"); Node parent2 = doc1Federated.addNode("parent2", null); parent2.addNode("child3"); parent2.addNode("child4"); session.save(); assertExternalNodeHasChildren("/testRoot/federated1/parent1", "child1", "childX", "child2"); assertExternalNodeHasChildren("/testRoot/federated1/parent2", "child3", "child4"); ((Workspace)session.getWorkspace()).move("/testRoot/federated1/parent1/childX", "/testRoot/federated1/parent2/childX"); assertExternalNodeHasChildren("/testRoot/federated1/parent1", "child1", "child2"); assertExternalNodeHasChildren("/testRoot/federated1/parent2", "child3", "child4", "childX"); }
org.modeshape.jcr.api.Workspace workspace2 = (org.modeshape.jcr.api.Workspace)session2.getWorkspace(); query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title2'", Query.JCR_SQL2); workspace2.reindexSince(priorToShutdown); query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title2'", Query.JCR_SQL2);
protected void query( String sql, String language, long numberOfResults, Predicate predicate ) throws Exception { Query query = ((Session)session).getWorkspace().getQueryManager().createQuery(sql, language); QueryResult result = query.execute(); assertResults(query, result, numberOfResults, predicate); }
@Test public void shouldNotIndexNotQueryableConnector() throws Exception { federationManager.createProjection("/testRoot", "mock-source-non-queryable", MockConnector.DOC2_LOCATION, "federated2"); Workspace workspace = session.getWorkspace(); workspace.reindex(); QueryManager queryManager = workspace.getQueryManager(); Query query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/federated2'", Query.JCR_SQL2); assertEquals(0, query.execute().getNodes().getSize()); query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/federated2/federated3'", Query.JCR_SQL2); assertEquals(0, query.execute().getNodes().getSize()); Node externalNode = session.getNode("/testRoot/federated2/federated3"); externalNode.setProperty("test", "a value"); session.save(); query = queryManager.createQuery("select * FROM [nt:base] as a WHERE a.test='a value'", Query.JCR_SQL2); assertEquals(0, query.execute().getNodes().getSize()); }
@Test public void shouldSeeCmisTypesAsJcrTypes() throws Exception { NodeTypeManager manager = getSession().getWorkspace().getNodeTypeManager(); NodeTypeIterator it = manager.getNodeType("nt:file").getDeclaredSubtypes(); while (it.hasNext()) { NodeType nodeType = it.nextNodeType(); assertTrue(nodeType != null); } }
@Test public void shouldBeAbleToMoveExternalNodes() throws Exception { assertNotNull(session.getNode("/cmis/My_Folder-0-0/My_Document-1-0")); ((Workspace)session.getWorkspace()).move("/cmis/My_Folder-0-0/My_Document-1-0", "/cmis/My_Folder-0-1/My_Document-1-X"); Node file = session.getNode("/cmis/My_Folder-0-1/My_Document-1-X"); assertNotNull(file); assertNotNull(session.getNode("/cmis/My_Folder-0-0")); ((Workspace)session.getWorkspace()).move("/cmis/My_Folder-0-0", "/cmis/My_Folder-0-X"); Node folder = session.getNode("/cmis/My_Folder-0-X"); assertNotNull(folder); assertEquals("nt:folder", folder.getPrimaryNodeType().getName()); //undo the moves so that the original folder and document are unchaged (they are used by the other tests as well) ((Workspace) session.getWorkspace()).move("/cmis/My_Folder-0-1/My_Document-1-X", "/cmis/My_Folder-0-X/My_Document-1-0"); ((Workspace) session.getWorkspace()).move("/cmis/My_Folder-0-X", "/cmis/My_Folder-0-0"); }
Query query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title2'", Query.JCR_SQL2); workspace2 = (org.modeshape.jcr.api.Workspace)session2.getWorkspace(); query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title2'", Query.JCR_SQL2); validateQuery().rowCount(0).useIndex("titleIndex").validate(query, query.execute()); query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title1'", Query.JCR_SQL2); validateQuery().rowCount(0).useIndex("titleIndex").validate(query, query.execute()); query = workspace2.getQueryManager().createQuery( "select node.[jcr:path] from [mix:title] as node where node.[jcr:title] = 'title1_edited'", Query.JCR_SQL2);
@Before @Override public void beforeEach() throws Exception { startRepositoryWithConfigurationFrom("config/repo-config-mock-federation.json"); testRoot = ((Node)session.getRootNode()).addNode("testRoot"); session.save(); federationManager = ((Workspace)session.getWorkspace()).getFederationManager(); }
@Test public void shouldIndexProjectionsAndExternalNodes() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC1_LOCATION, "federated1"); federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "federated2"); Workspace workspace = session.getWorkspace(); workspace.reindex(); QueryManager queryManager = workspace.getQueryManager(); Query query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/federated1'", Query.JCR_SQL2); assertEquals(1, query.execute().getNodes().getSize()); query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/federated2'", Query.JCR_SQL2); assertEquals(1, query.execute().getNodes().getSize()); Node externalNode = session.getNode("/testRoot/federated2/federated3"); externalNode.setProperty("test", "a value"); session.save(); query = queryManager.createQuery("select * FROM [nt:base] as a WHERE a.test='a value'", Query.JCR_SQL2); assertEquals(1, query.execute().getNodes().getSize()); query = queryManager.createQuery("select * FROM [nt:base] WHERE [jcr:path] LIKE '/testRoot/federated2/federated3'", Query.JCR_SQL2); assertEquals(1, query.execute().getNodes().getSize()); }
@Override public Collection<Throwable> restoreRepository(final FedoraSession session, final File backupDirectory) { final Session jcrSession = getJcrSession(session); try { final RepositoryManager repoMgr = ((org.modeshape.jcr.api.Session) jcrSession) .getWorkspace() .getRepositoryManager(); final Collection<Throwable> problems = new ArrayList<>(); repoMgr.restoreRepository(backupDirectory).forEach(x -> problems.add(x.getThrowable())); return problems; } catch (final RepositoryException e) { throw new RepositoryRuntimeException(e); } }
private void reindex(MetadataAccess metadata) { metadata.commit(() -> { Session session = JcrMetadataAccess.getActiveSession(); Workspace workspace = (Workspace) session.getWorkspace(); workspace.reindex(); }, MetadataAccess.SERVICE); }
@Test @FixFor( "MODE-1975" ) public void shouldNotCloneEntireWorkspacesIfExternalNodesExist() throws Exception { federationManager.createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "fed2"); Session ws1Session = jcrSessionTo("ws1"); ws1Session.getRootNode().addNode("testRoot"); ws1Session.save(); ((Workspace)ws1Session.getWorkspace()).getFederationManager().createProjection("/testRoot", SOURCE_NAME, MockConnector.DOC2_LOCATION, "ws1Fed2"); try { ws1Session.getWorkspace().clone("default", "/", "/", false); fail("Expected an ItemExistsException because the target workspace already contains an external node"); } catch (ItemExistsException e) { // expected if (print) { e.printStackTrace(); } } finally { ws1Session.logout(); } }
@Override public Collection<Throwable> backupRepository(final FedoraSession session, final File backupDirectory) { final Session jcrSession = getJcrSession(session); try { final RepositoryManager repoMgr = ((org.modeshape.jcr.api.Session) jcrSession) .getWorkspace() .getRepositoryManager(); final Collection<Throwable> problems = new ArrayList<>(); repoMgr.backupRepository(backupDirectory).forEach(x -> problems.add(x.getThrowable())); return problems; } catch (final RepositoryException e) { throw new RepositoryRuntimeException(e); } }
validateQuery().rowCount(0).useIndex("titleIndex").validate(query, query.execute()); ((org.modeshape.jcr.api.Workspace)session2.getWorkspace()).reindex("/");