diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/ArtifactHandler.java b/hawkbit-sdk/hawkbit-sdk-commons/src/main/java/org/eclipse/hawkbit/sdk/spi/ArtifactHandler.java similarity index 98% rename from hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/ArtifactHandler.java rename to hawkbit-sdk/hawkbit-sdk-commons/src/main/java/org/eclipse/hawkbit/sdk/spi/ArtifactHandler.java index 548628ff8..20f73b8f1 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/ArtifactHandler.java +++ b/hawkbit-sdk/hawkbit-sdk-commons/src/main/java/org/eclipse/hawkbit/sdk/spi/ArtifactHandler.java @@ -7,7 +7,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.eclipse.hawkbit.sdk.dmf; +package org.eclipse.hawkbit.sdk.spi; import java.nio.file.Path; import java.util.Optional; diff --git a/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/ArtifactHandler.java b/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/ArtifactHandler.java deleted file mode 100644 index d57a31cc1..000000000 --- a/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/ArtifactHandler.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) 2024 Contributors to the Eclipse Foundation - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipse.hawkbit.sdk.device; - -import java.nio.file.Path; -import java.util.Optional; - -/** - * Artifact handler provide plug-in endpoint allowing for customization of the artifact processing. - * For instance, it could save downloaded files in some location and on successful finish could - * apply them. - */ -public interface ArtifactHandler { - - ArtifactHandler SKIP = url -> DownloadHandler.SKIP; - - DownloadHandler getDownloadHandler(final String url); - - interface DownloadHandler { - - enum Status { - SUCCESS, ERROR - } - - DownloadHandler SKIP = new DownloadHandler() { - @Override - public void read(byte[] buff, int off, int len) { - // skip - } - - @Override - public void finished(Status status) { - // skip - } - - @Override - public Optional download() { - return Optional.empty(); - } - }; - - /** - * Called on every read chunk of data - * - * @param buff buffer - * @param off offset - * @param len read bytes - */ - void read(byte[] buff, int off, int len); - - /** - * Called when the download has finished. It could have finished with error in case of network problems, - * invalid hashes or size. In case of success the hashes and size are already checked and valid. - * - * @param status finish status. On error the download shall be discarded and related resources shall be released - */ - void finished(Status status); - - /** - * Return download path if existing - * - * @return the path to the download - */ - Optional download(); - } -} diff --git a/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/UpdateHandler.java b/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/UpdateHandler.java index cef2e7498..8ead374ed 100644 --- a/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/UpdateHandler.java +++ b/hawkbit-sdk/hawkbit-sdk-device/src/main/java/org/eclipse/hawkbit/sdk/device/UpdateHandler.java @@ -21,6 +21,7 @@ import org.eclipse.hawkbit.ddi.json.model.DdiArtifact; import org.eclipse.hawkbit.ddi.json.model.DdiArtifactHash; import org.eclipse.hawkbit.ddi.json.model.DdiChunk; import org.eclipse.hawkbit.ddi.json.model.DdiDeployment; +import org.eclipse.hawkbit.sdk.spi.ArtifactHandler; import org.springframework.hateoas.Link; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/UpdateHandler.java b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/UpdateHandler.java index 5766ede57..3627bc563 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/UpdateHandler.java +++ b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/UpdateHandler.java @@ -23,6 +23,7 @@ import org.eclipse.hawkbit.dmf.json.model.DmfArtifact; import org.eclipse.hawkbit.dmf.json.model.DmfArtifactHash; import org.eclipse.hawkbit.dmf.json.model.DmfDownloadAndUpdateRequest; import org.eclipse.hawkbit.dmf.json.model.DmfSoftwareModule; +import org.eclipse.hawkbit.sdk.spi.ArtifactHandler; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.util.CollectionUtils; diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfReceiverService.java b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfReceiverService.java index bf810b52e..c98f96b9e 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfReceiverService.java +++ b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfReceiverService.java @@ -49,7 +49,7 @@ public class DmfReceiverService extends MessageService { private final Set openActions = Collections.synchronizedSet(new HashSet<>()); - DmfReceiverService(final RabbitTemplate rabbitTemplate, final DmfSenderService dmfSenderService, + public DmfReceiverService(final RabbitTemplate rabbitTemplate, final DmfSenderService dmfSenderService, final DeviceManagement deviceManagement, final DmfProperties dmfProperties) { super(rabbitTemplate, dmfProperties); this.dmfSenderService = dmfSenderService; diff --git a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfSenderService.java b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfSenderService.java index d4b9a89ec..6f1a54cfb 100644 --- a/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfSenderService.java +++ b/hawkbit-sdk/hawkbit-sdk-dmf/src/main/java/org/eclipse/hawkbit/sdk/dmf/amqp/DmfSenderService.java @@ -46,7 +46,7 @@ public class DmfSenderService extends MessageService { private final String spExchange; private final ConcurrentHashMap> pingListeners = new ConcurrentHashMap<>(); - DmfSenderService(final RabbitTemplate rabbitTemplate, final DmfProperties dmfProperties) { + public DmfSenderService(final RabbitTemplate rabbitTemplate, final DmfProperties dmfProperties) { super(rabbitTemplate, dmfProperties); spExchange = AmqpSettings.DMF_EXCHANGE; }