@FixFor( "MODE-720" ) @SuppressWarnings( "unchecked" ) public void testShouldBeAbleToReferToUnsavedReferenceNode() throws Exception { session = getHelper().getSuperuserSession(); JcrNodeTypeManager nodeTypes = (JcrNodeTypeManager)session.getWorkspace().getNodeTypeManager(); /* * Register a one-off node type with a reference property that has a constraint on it */ NodeTypeTemplate ntt = nodeTypes.createNodeTypeTemplate(); ntt.setName("modetest:constrainedPropType"); PropertyDefinitionTemplate pdt = nodeTypes.createPropertyDefinitionTemplate(); pdt.setName("modetest:constrainedProp"); pdt.setRequiredType(PropertyType.REFERENCE); pdt.setValueConstraints(new String[] {"nt:unstructured"}); ntt.getPropertyDefinitionTemplates().add(pdt); nodeTypes.registerNodeType(ntt, false); /* * Add a node that would satisfy the constraint */ Node root = session.getRootNode(); Node parentNode = root.addNode("constrainedNodeTest", "nt:unstructured"); Node targetNode = parentNode.addNode("target", "nt:unstructured"); targetNode.addMixin("mix:referenceable"); /* * Now add a node with the one-off type. */ Node referringNode = parentNode.addNode("referer", "modetest:constrainedPropType"); referringNode.setProperty("modetest:constrainedProp", targetNode); session.save(); }
ntt.setName("modetest:typeWithWeakReference"); PropertyDefinitionTemplate pdt = nodeTypes.createPropertyDefinitionTemplate(); pdt.setName("modetest:weakRefProp"); pdt.setRequiredType(PropertyType.WEAKREFERENCE);
@SuppressWarnings("unchecked") @Test @FixFor("MODE-1954") public void shouldRemovePropertyDefinitionViaTemplate() throws Exception { session.getWorkspace().getNamespaceRegistry().registerNamespace("dmsmix", "http://myexample.com/dms"); NodeTypeTemplate fileContent = nodeTypeMgr.createNodeTypeTemplate(); fileContent.setName("dmsmix:filecontent"); nodeTypeMgr.registerNodeType(fileContent, true); NodeType nodeType = nodeTypeMgr.getNodeType("dmsmix:filecontent"); NodeTypeTemplate nodeTypeTemplate = nodeTypeMgr.createNodeTypeTemplate(nodeType); PropertyDefinitionTemplate tp = nodeTypeMgr.createPropertyDefinitionTemplate(); tp.setName("dmsmix:owner"); nodeTypeTemplate.getPropertyDefinitionTemplates().add(tp); nodeTypeMgr.registerNodeType(nodeTypeTemplate, true); nodeType = nodeTypeMgr.getNodeType("dmsmix:filecontent"); nodeTypeTemplate = nodeTypeMgr.createNodeTypeTemplate(nodeType); List<PropertyDefinitionTemplate> pts = nodeTypeTemplate.getPropertyDefinitionTemplates(); Iterator<PropertyDefinitionTemplate> pit = pts.iterator(); while (pit.hasNext()) { PropertyDefinitionTemplate pi = pit.next(); if (pi.getName().equals("dmsmix:owner")) { pit.remove(); } } nodeTypeMgr.registerNodeType(nodeTypeTemplate, true); }
@Test @FixFor( "MODE-2149" ) @SuppressWarnings("unchecked") public void shouldValidateConstraintValue() throws Exception { String namespaceName = "admb"; String namespaceUri = "http://www.admb.be/modeshape/admb/1.0"; String nodeTypeName = "test"; session.getWorkspace().getNamespaceRegistry().registerNamespace(namespaceName, namespaceUri); NodeTypeTemplate nodeTypeTemplate = nodeTypeMgr.createNodeTypeTemplate(); nodeTypeTemplate.setPrimaryItemName("test"); String primaryType = namespaceName.concat(":").concat(nodeTypeName); nodeTypeTemplate.setName(primaryType); PropertyDefinitionTemplate propertyDefinition = nodeTypeMgr.createPropertyDefinitionTemplate(); propertyDefinition.setName("test"); propertyDefinition.setRequiredType(PropertyType.LONG); propertyDefinition.setMandatory(true); propertyDefinition.setValueConstraints(new String[] { "test" }); nodeTypeTemplate.getPropertyDefinitionTemplates().add(propertyDefinition); try { nodeTypeMgr.registerNodeType(nodeTypeTemplate, false); fail("Should not allow the registration of a node type with invalid constraint"); } catch (ValueFormatException e) { //expected } }
nodeTypeTemplate.setName(primaryType); PropertyDefinitionTemplate propertyDefinition = nodeTypeMgr.createPropertyDefinitionTemplate(); propertyDefinition.setName("test"); propertyDefinition.setRequiredType(PropertyType.BOOLEAN);