/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.waveprotocol.wave.model.account;
/**
* Describes the access an address has to a wavelet, or to another address.
*
* This is used in two ways:<ul>
* <li>As an edge between an address and a wave, in which case the address can
* perform the capability directly to the wave.
* <li>As an edge between two addresses, in which case the source address can
* perform the capability as the destination address for waves.
*/
public enum Capability {
/**
* The address can add new participants to the wave. In the case of this
* capability existing between two addresses, the source address may request
* that the destination address add them to a wave the destination is already
* a participant on.
*/
JOIN,
/**
* In the case of access to a wavelet, the wave should be written to the
* address' index.
*
* In the case of access to an address, the source address is permitted to
* present in its index any data which is available in the destination
* address' index.
*/
INDEX,
/**
* This allows the source address to read wavelets directly, or read all
* wavelets that the target address may read.
*
* The address can read the wavelet, or the address may read wavelets that may
* be read by the target address.
*/
READ,
/**
* The source address can add the destination address to a wavelet,
* regardless of whether addition of that address is usually restricted.
* When an edge exists between two addresses, this should be set if and only
* if the source can add the destination address.
*/
ADD,
/**
* The address can issue ops to the wavelet, or (between two addresses)
* perform ops as the target address.
*/
WRITE,
}