@Override public void chown(final Account u, final String group) throws XMLDBException { final XmldbURI collUri = collection.getPathURI(); try { executeWithBroker( new BrokerOperation<Void>() { @Override public Void withBroker(final DBBroker broker) throws XMLDBException, LockException, PermissionDeniedException, IOException, EXistException, TriggerException, SyntaxException { return modifyCollection( broker, collUri, new DatabaseItemModifier<org.exist.collections.Collection, Void>() { @Override public Void modify(org.exist.collections.Collection collection) throws PermissionDeniedException, SyntaxException, LockException { final Permission permission = collection.getPermissions(); permission.setOwner(u); permission.setGroup(group); return null; } }); } }); } catch (final Exception e) { throw new XMLDBException( ErrorCodes.VENDOR_ERROR, "Failed to modify permission on Collection '" + collUri.toString() + "'", e); } }
@Override public Permission[] listCollectionPermissions() throws XMLDBException { final XmldbURI collectionUri = collection.getPathURI(); try { return executeWithBroker( new BrokerOperation<Permission[]>() { @Override public Permission[] withBroker(final DBBroker broker) throws XMLDBException, LockException, PermissionDeniedException, IOException, EXistException, TriggerException, SyntaxException { return readCollection( broker, collectionUri, new DatabaseItemReader<org.exist.collections.Collection, Permission[]>() { @Override public Permission[] read(org.exist.collections.Collection collection) throws XMLDBException, PermissionDeniedException { if (!collection.getPermissions().validate(user, Permission.READ)) { return new Permission[0]; } final Permission perms[] = new Permission[collection.getChildCollectionCount(broker)]; final Iterator<XmldbURI> itChildCollectionUri = collection.collectionIterator(broker); int i = 0; while (itChildCollectionUri.hasNext()) { final XmldbURI childCollectionUri = collectionUri.append(itChildCollectionUri.next()); Permission childPermission = readCollection( broker, childCollectionUri, new DatabaseItemReader< org.exist.collections.Collection, Permission>() { @Override public Permission read( org.exist.collections.Collection childCollection) { return childCollection.getPermissions(); } }); perms[i++] = childPermission; } return perms; } }); } }); } catch (final Exception e) { throw new XMLDBException(ErrorCodes.VENDOR_ERROR, e.getMessage(), e); } }