Modeshape: Not able to add child node
nimit.agrawal Apr 9, 2014 11:22 AMHi
I am not able to add a child node.
I have defined 2 templates parent and a child.
I can successfully add a parent node. when i am trying to add child node i am getting error.
javax.jcr.nodetype.ConstraintViolationException: Unable to determine a valid node definition for the node "/parent/FirstParent/FirstChild" in workspace "default" of "testRepo"
public class TestCase { @Inject private Repository repository; public void main(String[] args) throws LoginException, Exception { Session session = repository.login(); session.getWorkspace().getNamespaceRegistry().registerNamespace("ns", "www.com"); NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); NodeTypeTemplate template1 = nodeTypeManager.createNodeTypeTemplate(); template1.setName("ns:parent"); template1.setOrderableChildNodes(false); template1.setQueryable(false); // Adding property definition PropertyDefinitionTemplate prop = nodeTypeManager.createPropertyDefinitionTemplate(); prop.setName("host"); prop.setRequiredType(PropertyType.STRING); prop.setMandatory(false); prop.setDefaultValues(new Value[] { session.getValueFactory().createValue("localhost") }); template1.getPropertyDefinitionTemplates().add(prop); // Adding child node definition NodeDefinitionTemplate childTemplate = nodeTypeManager.createNodeDefinitionTemplate(); childTemplate.setName("ns:child"); childTemplate.setDefaultPrimaryTypeName("ns:parent"); childTemplate.setMandatory(false); childTemplate.setProtected(false); template1.getNodeDefinitionTemplates().add(childTemplate); nodeTypeManager.registerNodeType(template1, true); NodeTypeTemplate template2 = nodeTypeManager.createNodeTypeTemplate(); template2.setName("ns:child"); template2.setOrderableChildNodes(false); template2.setQueryable(false); PropertyDefinitionTemplate prop2 = nodeTypeManager.createPropertyDefinitionTemplate(); prop2.setName("host"); prop2.setRequiredType(PropertyType.STRING); prop2.setMandatory(false); prop2.setDefaultValues(new Value[] { session.getValueFactory().createValue("localhost") }); template2.getPropertyDefinitionTemplates().add(prop2); nodeTypeManager.registerNodeType(template2, true); Node rootNode = session.getRootNode().getNode("ns"); Node firstParentNode = rootNode.addNode("FirstParent", "ns:parent"); // Getting error in this line firstParentNode.addNode("FirstChild", "ns:child"); } }
Thanks in advance