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;
}
Aggregations