/** * Create a new node type factory that reads the node types from Jackrabbit XML files. * * @param session the session that will be used to register the node types; may not be null * @throws RepositoryException if there is a problem */ XmlNodeTypeReader( JcrSession session ) throws RepositoryException { this.session = session; this.nodeTypeManager = session.getWorkspace().getNodeTypeManager(); this.namespaces = this.session.getWorkspace().getNamespaceRegistry(); CharHandler supertypeHandler = new SupertypeNameHandler(); CharHandler requiredPrimaryTypeHandler = new RequiredPrimaryTypeHandler(); CharHandler defaultHandler = new DefaultValueHandler(); CharHandler constraintHandler = new ConstraintHandler(); this.charHandlers.put(SUPERTYPES, supertypeHandler); this.charHandlers.put(REQUIRED_PRIMARY_TYPES, requiredPrimaryTypeHandler); this.charHandlers.put(DEFAULT_VALUES, defaultHandler); this.charHandlers.put(VALUE_CONSTRAINTS, constraintHandler); this.charHandlers.put(SUPERTYPE, supertypeHandler); this.charHandlers.put(REQUIRED_PRIMARY_TYPE, requiredPrimaryTypeHandler); this.charHandlers.put(DEFAULT_VALUE, defaultHandler); this.charHandlers.put(VALUE_CONSTRAINT, constraintHandler); }
private JcrNodeTypeManager nodeTypeManager() throws RepositoryException { return session.getWorkspace().getNodeTypeManager(); } }
@Test public void shouldAccessCustomNodeTypeManagerViaCasting() throws Exception { NodeTypeManager nodeTypeMgr = session.getWorkspace().getNodeTypeManager(); assertThat(nodeTypeMgr, is(notNullValue())); }
@Test public void shouldGetNodeTypeManager() throws Exception { assertThat(workspace.getNodeTypeManager(), is(notNullValue())); }
protected static void registerNodeTypes( JcrSession session, String pathToClasspathResource ) throws RepositoryException, IOException { URL url = resourceUrl(pathToClasspathResource); session.getWorkspace().getNodeTypeManager().registerNodeTypes(url, true); }
@Override @Before public void beforeEach() throws Exception { super.beforeEach(); this.nodeTypeManager = session.getWorkspace().getNodeTypeManager(); }
@FixFor( "MODE-1828" ) @Test public void shouldAllowNodeTypeChangeAfterWrite() throws Exception { session = createSession(); session.workspace().getNodeTypeManager() .registerNodeTypes(getClass().getResourceAsStream("/cnd/nodeTypeChange-initial.cnd"), true); Node testRoot = session.getRootNode().addNode("/testRoot", "test:nodeTypeA"); testRoot.setProperty("fieldA", "foo"); session.save(); session.workspace().getNodeTypeManager() .registerNodeTypes(getClass().getResourceAsStream("/cnd/nodeTypeChange-next.cnd"), true); testRoot = session.getNode("/testRoot"); assertEquals("foo", testRoot.getProperty("fieldA").getString()); testRoot.setProperty("fieldB", "bar"); session.save(); testRoot = session.getNode("/testRoot"); assertEquals("foo", testRoot.getProperty("fieldA").getString()); assertEquals("bar", testRoot.getProperty("fieldB").getString()); }
@Override @Before public void beforeEach() throws Exception { super.beforeEach(); nodeTypeManager = session.getWorkspace().getNodeTypeManager(); context = session.context(); }
@Test @FixFor( "MODE-2511" ) public void shouldAllowReorderNodesWhenSameNameIsDisabled() throws Exception { try { session.getWorkspace().getNodeTypeManager().registerNodeTypes(resourceStream("cnd/magnolia.cnd"), true); // add 2 nodes under a parent that doesn't allow SNS and reorder them final Node root = session.getRootNode(); final Node parent = root.addNode("parent", "mgnl:content"); parent.addNode("name1", "nt:folder"); parent.addNode("name2", "nt:folder"); parent.orderBefore("name2", "name1"); session.save(); } finally { session.logout(); } }
@Override @Before public void beforeEach() throws Exception { super.beforeEach(); session.getWorkspace().getNodeTypeManager().registerNodeTypes(getTestTypes(), true); }
@FixFor("MODE-1026") @Test public void shouldImportFileExportedFromJackrabbitContainingBinaryStringData() throws Exception { // Register the node types ... tools.registerNodeTypes(session, "cars.cnd"); tools.registerNodeTypes(session, "cnd/magnolia.cnd"); assertThat(session.getWorkspace().getNodeTypeManager().getNodeType("mgnl:content"), is(notNullValue())); // Now import the file ... String filename = "io/system-export-with-xsitype-data-and-uuids.xml"; assertImport(filename, "/a", ImportBehavior.THROW); // no matching UUIDs expected // print = true; print("/a"); Node imageNode = assertNode("/a/company/image"); assertThat(imageNode.getProperty("extension").getValue().getString(), is("gif")); }
@FixFor( " MODE-1315 " ) @Test public void shouldReceiveEventWhenPropertyDeletedOnCustomNode() throws Exception { session.getWorkspace() .getNodeTypeManager() .registerNodeTypes(getClass().getClassLoader().getResourceAsStream("cars.cnd"), true); Node car = getRoot().addNode("car", "car:Car"); car.setProperty("car:maker", "Audi"); session.save(); SimpleListener listener = addListener(1, Event.PROPERTY_REMOVED, null, true, null, new String[] {"car:Car"}, false); Property carMakerProperty = car.getProperty("car:maker"); String propertyPath = carMakerProperty.getPath(); carMakerProperty.remove(); session.save(); listener.waitForEvents(); checkResults(listener); Event receivedEvent = listener.getEvents().get(0); assertEquals(Event.PROPERTY_REMOVED, receivedEvent.getType()); assertEquals(propertyPath, receivedEvent.getPath()); }
@Test public void shouldImportFileExportedFromJackrabbitContainingBinaryData() throws Exception { // Register the node types ... tools.registerNodeTypes(session, "cars.cnd"); tools.registerNodeTypes(session, "cnd/magnolia.cnd"); assertThat(session.getWorkspace().getNodeTypeManager().getNodeType("mgnl:content"), is(notNullValue())); // Now import the file ... String filename = "io/system-export-with-binary-data-and-uuids.xml"; assertImport(filename, "/a", ImportBehavior.THROW); // no matching UUIDs expected }
@Test @FixFor( "MODE-1807" ) public void shouldRegisterCNDFileWithResidualChildDefinition() throws Exception { session = createSession(); InputStream cndStream = getClass().getResourceAsStream("/cnd/orc.cnd"); assertThat(cndStream, is(notNullValue())); session.getWorkspace().getNodeTypeManager().registerNodeTypes(cndStream, true); session.getRootNode().addNode("patient", "orc:patient").addNode("patientcase", "orc:patientcase"); session.save(); assertNotNull(session.getNode("/patient/patientcase")); }
@Test @FixFor( "MODE-1722" ) public void shouldRegisterNodeTypeWithUriPropertyType() throws Exception { startRepository(); registerNodeTypes("cnd/nodetype-with-uri-property.cnd"); NodeTypeManager ntmgr = session.getWorkspace().getNodeTypeManager(); NodeType nt = ntmgr.getNodeType("ex:myNodeType"); PropertyDefinition uriPropDefn = nt.getDeclaredPropertyDefinitions()[0]; assertLocalNameAndNamespace(nt, "myNodeType", "ex"); assertThat(uriPropDefn.getName(), is("ex:path")); assertThat(uriPropDefn.getRequiredType(), is(PropertyType.URI)); }
@Override @Before public void beforeEach() throws Exception { super.beforeEach(); nameFactory = session.nameFactory(); repoTypeManager = session.repository().nodeTypeManager(); session.getWorkspace().getNodeTypeManager().registerNodeTypes(getTestTypes(), true); }
protected void registerNodeType( String typeName, boolean queryable, boolean mixin, String...declaredSuperTypes) throws RepositoryException { NodeTypeManager mgr = session.getWorkspace().getNodeTypeManager(); // Create a template for the node type ... NodeTypeTemplate type = mgr.createNodeTypeTemplate(); type.setName(typeName); type.setDeclaredSuperTypeNames(declaredSuperTypes); type.setAbstract(false); type.setOrderableChildNodes(true); type.setMixin(mixin); type.setQueryable(queryable); mgr.registerNodeType(type, true); }
private void registerNodeType( String typeName ) throws RepositoryException { NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager(); // Create a template for the node type ... NodeTypeTemplate type = nodeTypeManager.createNodeTypeTemplate(); type.setName(typeName); type.setDeclaredSuperTypeNames(new String[] {"nt:unstructured"}); type.setAbstract(false); type.setOrderableChildNodes(true); type.setMixin(false); type.setQueryable(true); nodeTypeManager.registerNodeType(type, true); }
protected NodeTypeDefinition[] getTestTypes() throws RepositoryException { NodeTypeManager mgr = session.getWorkspace().getNodeTypeManager(); NodeTypeTemplate basePrimaryType = createBasePrimaryType(mgr); NodeTypeTemplate mixinTypeA = createMixinA(mgr); NodeTypeTemplate mixinTypeB = createMixinB(mgr); NodeTypeTemplate mixinTypeC = createMixinC(mgr); NodeTypeTemplate mixinTypeWithAutoChild = createMixinWithAutoChild(mgr); NodeTypeTemplate mixinTypeWithAutoProperty = createMixinWithAutoProperty(mgr); NodeTypeTemplate primaryTypeA = createPrimaryTypeA(mgr); //create the items on mixin protected as "un-protected" first, so we can create children & properties NodeTypeTemplate mixinProtected = createMixinProtected(mgr, false); return new NodeTypeDefinition[] { basePrimaryType, mixinTypeA, mixinTypeB, mixinTypeC, mixinTypeWithAutoChild, mixinTypeWithAutoProperty, primaryTypeA, mixinProtected}; }
@Test public void shouldFindBuiltInNodeTypes() throws Exception { String queryString = "select [jcr:path] from [nt:base] where ischildnode('/jcr:system/jcr:nodeTypes')"; QueryManager queryManager = session.getWorkspace().getQueryManager(); Query query = queryManager.createQuery(queryString, Query.JCR_SQL2); QueryResult result = query.execute(); long numNodetypes = session.getWorkspace().getNodeTypeManager().getAllNodeTypes().getSize(); validateQuery().rowCount(numNodetypes).validate(query, result); }