use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Update method addCampaign.
/**
* Adds an update campaign.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* Campaign campaign = new Campaign();
* campaign.setName("QuickstartCampaign");
* campaign.setDescription("Quick start campaign");
* campaign.setState(CampaignState.DRAFT);
*
* Filters deviceFilter = new Filters();
* deviceFilter.add(new Filter("state", FilterOperator.EQUAL, "registered"));
* campaign.setDeviceFilter(deviceFilter);
*
* String firmwareManifestId = "015f4ac587f500000000000100100249";
* campaign.setManifestId(firmwareManifestId);
*
* Campaign newCampaign = updateApi.addCampaign(campaign);
* System.out.println("Campaign state: " + newCampaign.getState());
* System.out.println("Campaign ID: " + newCampaign.getId());
*
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param campaign
* The campaign to add.
* @return added update campaign.
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public Campaign addCampaign(@NonNull Campaign campaign) throws MbedCloudException {
checkNotNull(campaign, TAG_CAMPAIGN);
checkModelValidity(campaign, TAG_CAMPAIGN);
final Campaign finalCampaign = campaign;
return CloudCaller.call(this, "addCampaign()", CampaignAdapter.getMapper(), new CloudCall<UpdateCampaign>() {
@Override
public Call<UpdateCampaign> call() {
return endpoint.getUpdate().updateCampaignCreate(CampaignAdapter.reverseMapAdd(finalCampaign));
}
});
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Update method listCampaignDeviceStates.
/**
* Lists campaign devices states.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* String campaignId = "015f4ac587f500000000000100109294";
* CampaignDevicesStatesListOptions options = new CampaignDevicesStatesListOptions();
* options.setLimit(10);
*
* ListResponse<CampaignDeviceState> states = updateApi.listCampaignDeviceStates(campaignId, options);
* for (CampaignDeviceState state : states) {
* System.out.println("Device ID: " + state.getId());
* System.out.println("Currently in state: " + state.getState());
* }
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param campaignId
* The ID of the update campaign.
* @param options
* filter options.
* @return The list of campaign device states corresponding to filter options (One page).
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public ListResponse<CampaignDeviceState> listCampaignDeviceStates(@NonNull String campaignId, @Nullable CampaignDevicesStatesListOptions options) throws MbedCloudException {
checkNotNull(campaignId, TAG_CAMPAIGN_ID);
final String finalId = campaignId;
final CampaignDevicesStatesListOptions finalOptions = (options == null) ? new CampaignDevicesStatesListOptions() : options;
return CloudCaller.call(this, "listCampaignDeviceStates()", CampaignDeviceStateAdapter.getListMapper(), new CloudCall<CampaignDeviceMetadataPage>() {
@Override
public Call<CampaignDeviceMetadataPage> call() {
return endpoint.getUpdate().updateCampaignMetadataList(finalId, finalOptions.getLimit(), finalOptions.getOrder().toString(), finalOptions.getAfter(), finalOptions.encodeInclude());
}
});
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method listObservableResources.
/**
* Lists device's observable resources.
*
* @see Resource#isObservable()
* <p>
* Example:
*
* <pre>
* {@code
* try {
* Device device = new Device();
* device.setId("015f4ac587f500000000000100100249");
*
* List<Resource> resources = connectApi.listObservableResources(device);
* for (Resource resource : resources) {
* System.out.println("Resource path: " + resource.getPath());
* }
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param device
* Device.
* @return list of observable resources present on a device.
* @throws MbedCloudException
* if a problem occurred during request processing.
*/
@API
@Nullable
public List<Resource> listObservableResources(@NonNull Device device) throws MbedCloudException {
final List<Resource> resources = listResources(device);
if (resources == null || resources.isEmpty()) {
return null;
}
final List<Resource> observableResources = new LinkedList<>();
for (final Resource resource : resources) {
if (resource.isObservable()) {
observableResources.add(resource);
}
}
return observableResources.isEmpty() ? null : observableResources;
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method notify.
/**
* Allows a notification to be injected into the notifications system.
* <p>
* Example:
*
* <pre>
* {@code
* try {
* String deviceId = "015f4ac587f500000000000100100249";
* String resourcePath = "/3200/0/5501";
* String payload ="Q2hhbmdlIG1lIQ==";
* JSONSerialiser jsonSerialiser = new JSONSerialiser();
* String notifications = "{\"async-responses\":[{\"payload\":\"MQ\u003d\u003d\",\"id\":\"sfjasldfjl\"}],\"notifications\""
* +":[{\"path\":\"/3200/0/5501\",\"payload\":\"MQ\u003d\u003d\",\"ep\":\"015f4ac587f500000000000100100249\"}]}";
*
* Resource resource = new Resource(deviceId, resourcePath);
* api.createResourceSubscriptionObserver(resource, BackpressureStrategy.BUFFER)
* .subscribe(new Consumer<Object>() {
*
* @Override
* public void accept(Object t) throws Exception {
* log("Received notification value", t);
* }
* });
* api.notify(jsonSerialiser, notifications);
* } catch (MbedCloudException e) {
* e.printStackTrace();
* }
* }
* </pre>
*
* @param deserialiser
* JSON deserialiser to use.
* @param dataAsJson
* The notification data to inject as JSON String.
*/
@API
public void notify(@Nullable JsonSerialiser deserialiser, @Nullable String dataAsJson) {
final JsonSerialiser jsonEngine = (deserialiser == null) ? new JsonSerialiser() : deserialiser;
notify(jsonEngine.fromJson(dataAsJson, NotificationMessage.class));
}
use of com.arm.mbed.cloud.sdk.annotations.API in project mbed-cloud-sdk-java by ARMmbed.
the class Connect method startNotifications.
/**
* Starts notification pull.
* <p>
* If an external callback is not set up (using `update_webhook`) then calling this function is mandatory to get or
* set resources. Unless {@link ConnectionOptions#setAutostartDaemon(boolean)} has been set to true or left as
* default.
* <p>
* Example:
*
* <pre>
* {@code
* connectApi.startNotifications();
* }
* </pre>
*
* @throws MbedCloudException
* if a problem occurred during the process.
*/
@API
@Daemon(task = "Notification pull", start = true)
public void startNotifications() throws MbedCloudException {
Webhook webhook = null;
try {
if (isForceClear()) {
deleteWebhook();
}
} catch (MbedCloudException exception) {
// Nothing to do
}
try {
webhook = getWebhook();
} catch (MbedCloudException exception) {
// Nothing to do
}
if (webhook != null) {
logger.throwSdkException("A webhook is currently set up [" + webhook + "]. Notification pull cannot be used at the same time. Please remove the webhook if you want to use this mechanism instead.");
}
handlersStore.startNotificationPull();
}
Aggregations