Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ [Messaging] Introduced configuration to optionally skip Device.id resolution for KapuaDataMessage #4058

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -64,6 +64,7 @@
import org.eclipse.kapua.translator.kura.kapua.keystore.TranslatorAppKeystoreItemsKuraKapua;
import org.eclipse.kapua.translator.kura.kapua.keystore.TranslatorAppKeystoreNoContentKuraKapua;
import org.eclipse.kapua.translator.kura.kapua.keystore.TranslatorAppKeystoresKuraKapua;
import org.eclipse.kapua.translator.setting.TranslatorKapuaKuraSettings;

public class KapuaKuraTranslatorsModule extends AbstractKapuaModule {
@Override
@@ -122,6 +123,7 @@ protected void configureModule() {
.enable(DeserializationFeature.FAIL_ON_TRAILING_TOKENS)
.setSerializationInclusion(JsonInclude.Include.NON_NULL));

bind(TranslatorKapuaKuraSettings.class).in(Singleton.class);
}

@Provides
Original file line number Diff line number Diff line change
@@ -29,6 +29,8 @@
import org.eclipse.kapua.translator.exception.InvalidMessageException;
import org.eclipse.kapua.translator.exception.InvalidPayloadException;
import org.eclipse.kapua.translator.exception.TranslateException;
import org.eclipse.kapua.translator.setting.TranslatorKapuaKuraSettingKeys;
import org.eclipse.kapua.translator.setting.TranslatorKapuaKuraSettings;

import javax.inject.Inject;

@@ -48,6 +50,13 @@
@Inject
private TranslatorKuraKapuaUtils translatorKuraKapuaUtils;

final private boolean resolveDeviceId;

@Inject
public TranslatorDataKuraKapua(TranslatorKapuaKuraSettings translatorKapuaKuraSettings) {
resolveDeviceId = translatorKapuaKuraSettings.getBoolean(TranslatorKapuaKuraSettingKeys.TRANSLATOR_KURA_KAPUA_DATA_DEVICE_ID_RESOLVE);
}

Check warning on line 58 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/kura/kapua/TranslatorDataKuraKapua.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/kura/kapua/TranslatorDataKuraKapua.java#L56-L58

Added lines #L56 - L58 were not covered by tests

@Override
public KapuaDataMessage translate(KuraDataMessage kuraMessage) throws TranslateException {
try {
@@ -62,11 +71,8 @@
throw new KapuaEntityNotFoundException(Account.TYPE, kuraMessage.getChannel().getScope());
}

Device device = deviceRegistryService.findByClientId(account.getId(), kuraMessage.getChannel().getClientId());

KapuaDataMessage kapuaDataMessage = kapuaDataMessageFactory.newKapuaDataMessage();
kapuaDataMessage.setScopeId(account.getId());
kapuaDataMessage.setDeviceId(device != null ? device.getId() : null);
kapuaDataMessage.setClientId(kuraMessage.getChannel().getClientId());
kapuaDataMessage.setChannel(kapuaDataChannel);
kapuaDataMessage.setPayload(kapuaDataPayload);
@@ -75,6 +81,12 @@
kapuaDataMessage.setReceivedOn(kuraMessage.getTimestamp());
kapuaDataMessage.setPosition(translatorKuraKapuaUtils.translate(kuraMessage.getPayload().getPosition()));

// Optionally resolve the KapuaDataChannel.clientId to improve performances
if (resolveDeviceId) {
Device device = deviceRegistryService.findByClientId(account.getId(), kuraMessage.getChannel().getClientId());

Check warning on line 86 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/kura/kapua/TranslatorDataKuraKapua.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/kura/kapua/TranslatorDataKuraKapua.java#L86

Added line #L86 was not covered by tests
kapuaDataMessage.setDeviceId(device != null ? device.getId() : null);
}

// Return Kapua Message
return kapuaDataMessage;
} catch (InvalidChannelException | InvalidPayloadException te) {
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*******************************************************************************
* Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others
*
* 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
*
* Contributors:
* Eurotech - initial API and implementation
*******************************************************************************/
package org.eclipse.kapua.translator.setting;

import org.eclipse.kapua.commons.setting.SettingKey;
import org.eclipse.kapua.message.device.data.KapuaDataMessage;
import org.eclipse.kapua.service.device.call.message.kura.KuraChannel;
import org.eclipse.kapua.service.device.call.message.kura.data.KuraDataMessage;
import org.eclipse.kapua.service.device.registry.Device;

/**
* {@link SettingKey}s for {@link TranslatorKapuaKuraSettings}
*
* @since 2.1.0
*/
public enum TranslatorKapuaKuraSettingKeys implements SettingKey {

Check warning on line 26 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java#L26

Added line #L26 was not covered by tests

/**
* Whether to resolve the {@link Device#getId()} from the {@link KuraChannel#getClientId()} when converting from {@link KuraDataMessage} to {@link KapuaDataMessage}.
*
* @since 2.1.0
*/
TRANSLATOR_KURA_KAPUA_DATA_DEVICE_ID_RESOLVE("translator.kura.kapua.data.deviceId.resolve");

Check warning on line 33 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java#L33

Added line #L33 was not covered by tests

/**
* The key value of the {@link SettingKey}.
*
* @since 2.1.0
*/
private final String key;

/**
* Constructor.
*
* @param key The key value of the {@link SettingKey}.
* @since 2.1.0
*/
TranslatorKapuaKuraSettingKeys(String key) {
this.key = key;
}

Check warning on line 50 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java#L48-L50

Added lines #L48 - L50 were not covered by tests

@Override
public String key() {
return key;

Check warning on line 54 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettingKeys.java#L54

Added line #L54 was not covered by tests
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*******************************************************************************
* Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others
*
* 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
*
* Contributors:
* Eurotech - initial API and implementation
*******************************************************************************/
package org.eclipse.kapua.translator.setting;

import org.eclipse.kapua.commons.setting.AbstractKapuaSetting;

/**
* {@link TranslatorKapuaKuraSettings} for {@code kapua-translator-kapua-kura} module.
*
* @see AbstractKapuaSetting
* @since 2.1.0
*/
public class TranslatorKapuaKuraSettings extends AbstractKapuaSetting<TranslatorKapuaKuraSettingKeys> {

/**
* Setting filename.
*
* @since 2.1.0
*/
private static final String TRANSLATOR_KAPUA_KURA_SETTING_RESOURCE = "translator-kapua-kura-settings.properties";

/**
* Constructor.
*
* @since 2.1.0
*/
public TranslatorKapuaKuraSettings() {
super(TRANSLATOR_KAPUA_KURA_SETTING_RESOURCE);
}

Check warning on line 39 in translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettings.java

Codecov / codecov/patch

translator/kapua/kura/src/main/java/org/eclipse/kapua/translator/setting/TranslatorKapuaKuraSettings.java#L38-L39

Added lines #L38 - L39 were not covered by tests
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
###############################################################################
# Copyright (c) 2024, 2022 Eurotech and/or its affiliates and others
#
# 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
#
# Contributors:
# Eurotech - initial API and implementation
#
###############################################################################
translator.kura.kapua.data.deviceId.resolve=true