/** * Get the absolute and normalized identifier path for this node, regardless of whether this node is referenceable. * * @return the node's identifier path; never null * @throws RepositoryException if there is an error accessing the identifier of this node */ final String identifierPath() throws RepositoryException { return "[" + getIdentifier() + "]"; }
/** * Get the absolute and normalized identifier path for this node, regardless of whether this node is referenceable. * * @return the node's identifier path; never null * @throws RepositoryException if there is an error accessing the identifier of this node */ final String identifierPath() throws RepositoryException { return "[" + getIdentifier() + "]"; }
@Deprecated @Override public final String getUUID() throws UnsupportedRepositoryOperationException, RepositoryException { if (!isReferenceable()) { throw new UnsupportedRepositoryOperationException(); } return getIdentifier(); }
@Deprecated @Override public final String getUUID() throws UnsupportedRepositoryOperationException, RepositoryException { if (!isReferenceable()) { throw new UnsupportedRepositoryOperationException(); } return getIdentifier(); }
@Test @FixFor( "MODE-1972" ) public void shouldCloneEntireWorkspaces() throws Exception { otherWorkspace.clone(workspaceName, "/", "/", true); assertEquals(session.getNode("/a").getIdentifier(), otherSession.getNode("/a").getIdentifier()); assertEquals(session.getNode("/a/b").getIdentifier(), otherSession.getNode("/a/b").getIdentifier()); assertEquals(session.getNode("/a/b/c").getIdentifier(), otherSession.getNode("/a/b/c").getIdentifier()); assertEquals(session.getNode("/b").getIdentifier(), otherSession.getNode("/b").getIdentifier()); }
@Test @FixFor( "MODE-2007" ) public void shouldCloneChildrenOfRoot() throws Exception { otherWorkspace.clone(workspaceName, "/a", "/a", false); otherWorkspace.clone(workspaceName, "/b", "/b", false); assertEquals(session.getNode("/a").getIdentifier(), otherSession.getNode("/a").getIdentifier()); assertEquals(session.getNode("/a/b").getIdentifier(), otherSession.getNode("/a/b").getIdentifier()); assertEquals(session.getNode("/a/b/c").getIdentifier(), otherSession.getNode("/a/b/c").getIdentifier()); assertEquals(session.getNode("/b").getIdentifier(), otherSession.getNode("/b").getIdentifier()); }
@Test public void shouldReturnFalseFromIsSameIfTheWorkspaceNameIsDifferent() throws Exception { // Use the same id and location; use 'Toyota Prius' String priusUuid2 = prius2.getIdentifier(); String priusUuid = prius.getIdentifier(); assertThat(priusUuid, is(priusUuid2)); assertThat(prius2.isSame(prius), is(false)); // Check the properties ... javax.jcr.Property model = prius.getProperty("car:model"); javax.jcr.Property model2 = prius2.getProperty("car:model"); assertThat(model.isSame(model2), is(false)); }
@Test public void shouldProvideNode() throws Exception { prop = cars.getProperty("referenceProperty"); assertThat(prop.getNode(), is((Node)altima)); assertThat(prop.getAs(Node.class), is((Node)altima)); NodeIterator nodeIterator = prop.getAs(NodeIterator.class); assertThat(nodeIterator.getSize(), is(1l)); assertThat(nodeIterator.nextNode(), is((Node)altima)); assertThat(prop.getType(), is(PropertyType.REFERENCE)); assertThat(prop.getString(), is(altima.getIdentifier())); assertThat(prop.getLength(), is((long) altima.getIdentifier().length())); checkValue(prop); }
@Test @FixFor( "MODE-1613" ) public void shouldMoveSNSAndNotCorruptThePathsOfRemainingSiblings() throws Exception { startRepositoryWithConfigurationFrom("config/simple-repo-config.json"); // /testRoot/parent0/child // /testRoot/parent0/child[2] // /testRoot/parent0/child[3] // /testRoot/parent1/child // /testRoot/parent1/child[2] // /testRoot/parent1/child[3] // move /testRoot/parent0/child[1] to /testRoot/parent1. createTreeWithSNS(2, 3); String srcId = session.getNode("/testRoot/parent0/child[1]").getIdentifier(); String destId = session.getNode("/testRoot/parent1").getIdentifier(); moveSNSWhileCachingPaths(srcId, destId, "child"); }
@SuppressWarnings( "deprecation" ) protected String identifierPathFor( String pathToNode ) throws Exception { AbstractJcrNode node = session.getNode(pathToNode); if (node.isNodeType("mix:referenceable")) { // Make sure that the identifier matches the UUID ... assertThat(node.getUUID(), is(node.getIdentifier())); } else { try { node.getUUID(); fail("Should have thrown an UnsupportedRepositoryOperationException if the node " + pathToNode + " is not referenceable"); } catch (UnsupportedRepositoryOperationException e) { // expected } } return node.identifierPath(); } }
@Test @FixFor( "MODE-2114" ) public void copiedReferencesShouldHaveUpdatedUUIDs() throws Exception { tools.registerNodeTypes(session, "cnd/references.cnd"); Node parent = session.getRootNode().addNode("parent"); Node nodeA = parent.addNode("A", "test:node"); Node nodeB = parent.addNode("B", "test:node"); Node nodeC = parent.addNode("C", "test:node"); Node nodeD = parent.addNode("D", "test:node"); nodeA.setProperty("test:strongReference", session.getValueFactory().createValue(nodeB)); nodeA.setProperty("test:weakReference", session.getValueFactory().createValue(nodeC, true)); nodeA.setProperty("test:simpleReference", session.getValueFactory().createSimpleReference(nodeD)); session.save(); workspace.copy("/parent", "/new_parent"); AbstractJcrNode otherA = session.getNode("/new_parent/A"); AbstractJcrNode otherB = session.getNode("/new_parent/B"); AbstractJcrNode otherC = session.getNode("/new_parent/C"); AbstractJcrNode otherD = session.getNode("/new_parent/D"); assertEquals(otherB.getIdentifier(), otherA.getProperty("test:strongReference").getNode().getIdentifier()); assertEquals(otherC.getIdentifier(), otherA.getProperty("test:weakReference").getNode().getIdentifier()); assertEquals(otherD.getIdentifier(), otherA.getProperty("test:simpleReference").getNode().getIdentifier()); }
@Test @FixFor( "MODE-2012" ) public void clonedUUIDsShouldBeTheSame() throws Exception { tools.registerNodeTypes(session, "cnd/references.cnd"); Node nodeA = session.getRootNode().addNode("A", "test:node"); Node nodeB = session.getRootNode().addNode("B", "test:node"); session.save(); otherWorkspace.clone("default", "/", "/", true); assertEquals(nodeA.getIdentifier(), otherSession.getNode("/A").getIdentifier()); assertEquals(nodeB.getIdentifier(), otherSession.getNode("/B").getIdentifier()); }
@Test @FixFor( "MODE-2012" ) public void copiedUUIDsShouldNotBeTheSame() throws Exception { tools.registerNodeTypes(session, "cnd/references.cnd"); Node nodeA = session.getRootNode().addNode("A", "test:node"); Node nodeB = session.getRootNode().addNode("B", "test:node"); session.save(); otherWorkspace.copy("default", "/", "/"); assertNotEquals(nodeA.getIdentifier(), otherSession.getNode("/A").getIdentifier()); assertNotEquals(nodeB.getIdentifier(), otherSession.getNode("/B").getIdentifier()); }
assertEquals(a.getIdentifier(), singleRef.getNode().getIdentifier()); assertNoBackReferences(a); Value[] actualValues = multiRef.getValues(); assertEquals(2, actualValues.length); assertArrayEquals(new String[] { b.getIdentifier(), c.getIdentifier() }, new String[] { actualValues[0].getString(), actualValues[1].getString() }); assertNoBackReferences(b);
@FixFor( "MODE-1679" ) @Test public void shouldBeAbleToCreateAndExecuteJcrSql2QueryWithSingleReferenceConstraintUsingStringIdentifier() throws RepositoryException { String id = session.getNode("/Other/NodeA").getIdentifier(); assertThat(id, is(notNullValue())); String sql = "SELECT [notion:singleReference] FROM [notion:typed] AS typed WHERE [notion:singleReference] = '" + id + "'"; Query query = session.getWorkspace().getQueryManager().createQuery(sql, Query.JCR_SQL2); QueryResult result = query.execute(); validateQuery().rowCount(1).hasColumns("notion:singleReference").onEachRow(new Predicate() { @Override public void validate( int rowNumber, Row row ) throws RepositoryException { assertValueIsNonNullReference(row, "notion:singleReference"); } }).validate(query, result); }
@FixFor( "MODE-1679" ) @Test public void shouldBeAbleToCreateAndExecuteJcrSql2QueryWithMultipleReferenceConstraintUsingStringIdentifier() throws RepositoryException { String id = session.getNode("/Other/NodeA[2]").getIdentifier(); assertThat(id, is(notNullValue())); String sql = "SELECT [notion:multipleReferences] FROM [notion:typed] AS typed WHERE [notion:multipleReferences] = '" + id + "'"; Query query = session.getWorkspace().getQueryManager().createQuery(sql, Query.JCR_SQL2); QueryResult result = query.execute(); validateQuery().rowCount(1).hasColumns("notion:multipleReferences").onEachRow(new Predicate() { @Override public void validate( int rowNumber, Row row ) throws RepositoryException { assertValueIsNonNullReference(row, "notion:multipleReferences"); } }).validate(query, result); }
@Test @FixFor( "MODE-2012" ) public void clonedReferencesShouldPointToTargetWorkspace() throws Exception { tools.registerNodeTypes(session, "cnd/references.cnd"); Node nodeA = session.getRootNode().addNode("A", "test:node"); Node nodeB = session.getRootNode().addNode("B", "test:node"); Node nodeC = session.getRootNode().addNode("C", "test:node"); Node nodeD = session.getRootNode().addNode("D", "test:node"); nodeA.setProperty("test:strongReference", session.getValueFactory().createValue(nodeB)); nodeA.setProperty("test:weakReference", session.getValueFactory().createValue(nodeC, true)); nodeA.setProperty("test:simpleReference", session.getValueFactory().createSimpleReference(nodeD)); session.save(); otherWorkspace.clone("default", "/", "/", true); nodeD.remove(); nodeC.remove(); nodeB.remove(); nodeA.remove(); session.save(); AbstractJcrNode otherA = otherSession.getNode("/A"); AbstractJcrNode otherB = otherSession.getNode("/B"); AbstractJcrNode otherC = otherSession.getNode("/C"); AbstractJcrNode otherD = otherSession.getNode("/D"); assertEquals(otherB.getIdentifier(), otherA.getProperty("test:strongReference").getNode().getIdentifier()); assertEquals(otherC.getIdentifier(), otherA.getProperty("test:weakReference").getNode().getIdentifier()); assertEquals(otherD.getIdentifier(), otherA.getProperty("test:simpleReference").getNode().getIdentifier()); }
@Test @FixFor( "MODE-2012" ) public void copiedReferencesShouldPointToTargetWorkspace() throws Exception { tools.registerNodeTypes(session, "cnd/references.cnd"); Node nodeA = session.getRootNode().addNode("A", "test:node"); Node nodeB = session.getRootNode().addNode("B", "test:node"); Node nodeC = session.getRootNode().addNode("C", "test:node"); Node nodeD = session.getRootNode().addNode("D", "test:node"); nodeA.setProperty("test:strongReference", session.getValueFactory().createValue(nodeB)); nodeA.setProperty("test:weakReference", session.getValueFactory().createValue(nodeC, true)); nodeA.setProperty("test:simpleReference", session.getValueFactory().createSimpleReference(nodeD)); session.save(); otherWorkspace.copy("default", "/", "/"); nodeD.remove(); nodeC.remove(); nodeB.remove(); nodeA.remove(); session.save(); AbstractJcrNode otherA = otherSession.getNode("/A"); AbstractJcrNode otherB = otherSession.getNode("/B"); AbstractJcrNode otherC = otherSession.getNode("/C"); AbstractJcrNode otherD = otherSession.getNode("/D"); assertEquals(otherB.getIdentifier(), otherA.getProperty("test:strongReference").getNode().getIdentifier()); assertEquals(otherC.getIdentifier(), otherA.getProperty("test:weakReference").getNode().getIdentifier()); assertEquals(otherD.getIdentifier(), otherA.getProperty("test:simpleReference").getNode().getIdentifier()); }
if (!wasReferenceable && mixinType.isNodeType(JcrMixLexicon.REFERENCEABLE)) { Property uuidProp = session.propertyFactory().create(JcrLexicon.UUID, getIdentifier()); mutable.setProperty(cache, uuidProp);
cars.setProperty("referenceProperty", values(new Node[] {altima, aston})); cars.setProperty("referenceProperty2", values(PropertyType.STRING, new String[] {altima.getIdentifier(), aston.getIdentifier()})); cars.setProperty("stringProperty", values(PropertyType.STRING, stringValue)); cars.setProperty("pathProperty", values(PropertyType.PATH, pathValue));