/** * Helper method which creates a new entity or update the existing entity with given entity * * @param entity * @throws NamespaceException */ private void createOrUpdateEntity(final NamespaceEntity entity, NamespaceAttribute... attributes) throws NamespaceException { final NamespaceKey entityPath = entity.getPathKey().getPath(); final List<NameSpaceContainer> entitiesOnPath = getEntitiesOnPath(entityPath); doCreateOrUpdateEntity(entity, entitiesOnPath, attributes); }
builder.append("\n"); for (NamespaceInternalKey key : sourcesKeys) { builder.append(getSource(key.getPath()).toString()); builder.append("\n"); for (NameSpaceContainer container : traverseEntity(key.getPath())) { builder.append(container.toString()); builder.append("\n"); builder.append("\n"); for (NamespaceInternalKey key : spacesKeys) { builder.append(getSpace(key.getPath()).toString()); builder.append("\n"); for (NameSpaceContainer container : traverseEntity(key.getPath())) { builder.append(container.toString()); builder.append("\n"); builder.append("\n"); for (NamespaceInternalKey key : homeKeys) { builder.append(getHome(key.getPath()).toString()); builder.append("\n"); for (NameSpaceContainer container : traverseEntity(key.getPath())) { builder.append(container.toString()); builder.append("\n");
/** * Helper method which travels the tree rooted at the given key and deletes all children in a DFS traversal * (except the root). In order to delete an entity, user should have edit permissions on its parent, * no need of any permission requirements on the entity that is being deleted (Linux FileSystem permission model) * * @param key * @param container * @throws NamespaceException */ private void traverseAndDeleteChildren(final NamespaceInternalKey key, final NameSpaceContainer container) throws NamespaceException { if (!NamespaceUtils.isListable(container.getType())) { return; } for (NameSpaceContainer child : listEntity(key.getPath())) { doTraverseAndDeleteChildren(child); } }
@Test public void testNamespaceParseKey() throws Exception { NamespaceInternalKey key = newKey("a.b.c"); NamespaceInternalKey parsedKey = NamespaceInternalKey.parseKey(key.getKey()); assertEquals(key.getPath(), parsedKey.getPath()); assertTrue(Arrays.equals(key.getKey(), parsedKey.getKey())); key = newKey("a.b.c"); parsedKey = NamespaceInternalKey.parseKey(key.getKey()); assertEquals(key.getPath(), parsedKey.getPath()); key = newKey("a"); parsedKey = NamespaceInternalKey.parseKey(key.getKey()); assertEquals(key.getPath(), parsedKey.getPath()); key = newKey("a.b"); parsedKey = NamespaceInternalKey.parseKey(key.getKey()); assertEquals(key.getPath(), parsedKey.getPath()); key = newKey("a.a.a.a"); parsedKey = NamespaceInternalKey.parseKey(key.getKey()); assertEquals(key.getPath(), parsedKey.getPath()); }
throw UserException.validationError() .message("There already exists an entity of type [%s] at given path [%s]", existingContainer.getType(), newOrUpdatedEntity.getPathKey().getPath()) .build(logger);