Search in sources :

Example 1 with Subscription

use of com.arm.mbed.cloud.sdk.connect.model.Subscription in project mbed-cloud-sdk-java by ARMmbed.

the class Connect method listSubscriptions.

/**
 * Lists all subscriptions.
 * <p>
 * Warning: Please note that this operation is potentially really expensive and hence, use wisely.
 * <p>
 * It could be slow for large numbers of connected devices.
 * <p>
 * Example:
 *
 * <pre>
 * {@code
 * try {
 *
 *     List<String> subscriptions = connectApi.listSubscriptions();
 *     for (Subscription subscription : subscriptions) {
 *         System.out.println("subscription: " + subscription);
 *     }
 * } catch (MbedCloudException e) {
 *     e.printStackTrace();
 * }
 * }
 * </pre>
 *
 * @return list of subscriptions
 * @throws MbedCloudException
 *             if a problem occurred during request processing.
 */
@API
@Nullable
public List<Subscription> listSubscriptions() throws MbedCloudException {
    logger.logWarn("listSubscriptions() could be slow for large numbers of connected devices.");
    final List<Subscription> subscriptions = new LinkedList<>();
    // The following is a workaround until there is a Mbed Cloud endpoint providing such an action.
    final Paginator<Device> connectedDevices = listAllConnectedDevices(null);
    if (connectedDevices != null) {
        for (final Device connectedDevice : connectedDevices) {
            final List<String> deviceSubscriptions = listDeviceSubscriptions(connectedDevice);
            if (deviceSubscriptions != null) {
                subscriptions.add(new Subscription(connectedDevice.getId(), deviceSubscriptions));
            }
        }
    }
    return subscriptions.isEmpty() ? null : subscriptions;
}
Also used : Device(com.arm.mbed.cloud.sdk.devicedirectory.model.Device) Subscription(com.arm.mbed.cloud.sdk.connect.model.Subscription) LinkedList(java.util.LinkedList) API(com.arm.mbed.cloud.sdk.annotations.API) Nullable(com.arm.mbed.cloud.sdk.annotations.Nullable)

Aggregations

API (com.arm.mbed.cloud.sdk.annotations.API)1 Nullable (com.arm.mbed.cloud.sdk.annotations.Nullable)1 Subscription (com.arm.mbed.cloud.sdk.connect.model.Subscription)1 Device (com.arm.mbed.cloud.sdk.devicedirectory.model.Device)1 LinkedList (java.util.LinkedList)1