From a299aae2aecbed1973738ac5a559c838956ea90d Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Sun, 27 Jun 2021 12:25:39 +0200 Subject: [PATCH 1/3] Move type URL to the technical message types to have less literals and single point of responsibility. --- agrirouter-sdk-java-api/pom.xml | 7 +++- .../api/enums/ContentMessageType.kt | 35 ++++++++++++------- .../agrirouter/api/enums/SystemMessageType.kt | 34 +++++++++++------- .../api/enums/TechnicalMessageType.kt | 5 +++ .../impl/messaging/MessageEncoder.java | 19 +++++----- ci/settings.xml | 10 ++++++ pom.xml | 9 ++++- 7 files changed, 81 insertions(+), 38 deletions(-) diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index 9c043186..3a73b0c9 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 @@ -15,6 +16,10 @@ com.agrirouter.proto agrirouter-api-protobuf-definitions + + com.agrirouter.proto + agrirouter-tmt-protobuf-definitions + org.glassfish.jersey.media jersey-media-json-jackson diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt index 8ba3345d..6f2df23e 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt @@ -1,23 +1,32 @@ package com.dke.data.agrirouter.api.enums +import agrirouter.technicalmessagetype.Gps + /** * Enum containing all the content message types the AR is supporting. */ -enum class ContentMessageType(private val key: String) : TechnicalMessageType { - ISO_11783_TASKDATA_ZIP("iso:11783:-10:taskdata:zip"), - ISO_11783_DEVICE_DESCRIPTION("iso:11783:-10:device_description:protobuf"), - ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf"), - SHP_SHAPE_ZIP("shp:shape:zip"), - DOC_PDF("doc:pdf"), - IMG_JPEG("img:jpeg"), - IMG_PNG("img:png"), - IMG_BMP("img:bmp"), - VID_AVI("vid:avi"), - VID_MP4("vid:mp4"), - VID_WMV("vid:wmv"), - GPS_INFO("gps:info"); +enum class ContentMessageType(private val key: String, private val typeUrl: String) : TechnicalMessageType { + ISO_11783_TASKDATA_ZIP("iso:11783:-10:taskdata:zip", ""), + + //FIXME Since the spec is not public, we can only use those literals. + ISO_11783_DEVICE_DESCRIPTION("iso:11783:-10:device_description:protobuf", "types.agrirouter.com\\efdi.ISO11783_TaskData"), + ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com\\efdi.ISO11783_TaskData"), + + SHP_SHAPE_ZIP("shp:shape:zip", ""), + DOC_PDF("doc:pdf", ""), + IMG_JPEG("img:jpeg", ""), + IMG_PNG("img:png", ""), + IMG_BMP("img:bmp", ""), + VID_AVI("vid:avi", ""), + VID_MP4("vid:mp4", ""), + VID_WMV("vid:wmv", ""), + GPS_INFO("gps:info", Gps.GPSList.getDescriptor().fullName); override fun getKey(): String { return key } + + override fun getTypeUrl(): String { + return typeUrl + } } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt index 91d56d32..953a091e 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt @@ -1,23 +1,33 @@ package com.dke.data.agrirouter.api.enums +import agrirouter.cloud.registration.CloudVirtualizedAppRegistration +import agrirouter.feed.request.FeedRequests +import agrirouter.request.payload.account.Endpoints +import agrirouter.request.payload.endpoint.Capabilities +import agrirouter.request.payload.endpoint.SubscriptionOuterClass + /** * Enum containing all the content message types the AR is supporting. */ -enum class SystemMessageType(private val key: String) : TechnicalMessageType { - EMPTY(""), - DKE_CLOUD_ONBOARD_ENDPOINTS("dke:cloud_onboard_endpoints"), - DKE_CLOUD_OFFBOARD_ENDPOINTS("dke:cloud_offboard_endpoints"), - DKE_CAPABILITIES("dke:capabilities"), - DKE_SUBSCRIPTION("dke:subscription"), - DKE_LIST_ENDPOINTS("dke:list_endpoints"), - DKE_LIST_ENDPOINTS_UNFILTERED("dke:list_endpoints_unfiltered"), - DKE_FEED_CONFIRM("dke:feed_confirm"), - DKE_FEED_DELETE("dke:feed_delete"), - DKE_FEED_MESSAGE_QUERY("dke:feed_message_query"), - DKE_FEED_HEADER_QUERY("dke:feed_header_query"); +enum class SystemMessageType(private val key: String, private val typeUrl: String) : TechnicalMessageType { + EMPTY("", ""), + DKE_CLOUD_ONBOARD_ENDPOINTS("dke:cloud_onboard_endpoints", CloudVirtualizedAppRegistration.OnboardingRequest.getDescriptor().fullName), + DKE_CLOUD_OFFBOARD_ENDPOINTS("dke:cloud_offboard_endpoints", CloudVirtualizedAppRegistration.OffboardingRequest.getDescriptor().fullName), + DKE_CAPABILITIES("dke:capabilities", Capabilities.CapabilitySpecification.getDescriptor().fullName), + DKE_SUBSCRIPTION("dke:subscription", SubscriptionOuterClass.Subscription.getDescriptor().fullName), + DKE_LIST_ENDPOINTS("dke:list_endpoints", Endpoints.ListEndpointsQuery.getDescriptor().fullName), + DKE_LIST_ENDPOINTS_UNFILTERED("dke:list_endpoints_unfiltered", Endpoints.ListEndpointsQuery.getDescriptor().fullName), + DKE_FEED_CONFIRM("dke:feed_confirm", FeedRequests.MessageConfirm.getDescriptor().fullName), + DKE_FEED_DELETE("dke:feed_delete", FeedRequests.MessageDelete.getDescriptor().fullName), + DKE_FEED_MESSAGE_QUERY("dke:feed_message_query", FeedRequests.MessageQuery.getDescriptor().fullName), + DKE_FEED_HEADER_QUERY("dke:feed_header_query", FeedRequests.MessageQuery.getDescriptor().fullName); override fun getKey(): String { return key } + override fun getTypeUrl(): String { + return typeUrl + } + } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/TechnicalMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/TechnicalMessageType.kt index ae3b0937..b2293265 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/TechnicalMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/TechnicalMessageType.kt @@ -10,4 +10,9 @@ interface TechnicalMessageType { */ fun getKey(): String + /** + * The type url (if present) of the technical message type. + */ + fun getTypeUrl(): String + } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java index db784656..f318e2da 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java @@ -69,7 +69,7 @@ default EncodedMessage encode(DeleteMessageParameters parameters) { } PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(FeedRequests.MessageDelete.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_DELETE.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); String encodedMessage = @@ -119,7 +119,7 @@ default EncodedMessage encode(ListEndpointsParameters parameters) { Objects.requireNonNull(parameters.getTechnicalMessageType()).getKey()); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(Endpoints.ListEndpointsQuery.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_LIST_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); String encodedMessage = @@ -163,7 +163,7 @@ default EncodedMessage encode(MessageConfirmationParameters parameters) { messageContent.addAllMessageIds(Objects.requireNonNull(parameters.getMessageIds())); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(FeedRequests.MessageConfirm.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_CONFIRM.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); String encodedMessage = @@ -224,8 +224,7 @@ default EncodedMessage encode(SetCapabilitiesParameters parameters) { }); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl( - Capabilities.CapabilitySpecification.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CAPABILITIES.getTypeUrl()); payloadParameters.setValue(builder.build().toByteString()); String encodedMessage = @@ -281,7 +280,7 @@ default EncodedMessage encodeMessage(SetSubscriptionParameters parameters) { }); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SubscriptionOuterClass.Subscription.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_SUBSCRIPTION.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); String encodedMessage = @@ -345,7 +344,7 @@ default EncodedMessage encode( this.getNativeLogger().trace("Build message payload parameters."); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(FeedRequests.MessageQuery.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(technicalMessageType.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); this.getNativeLogger().trace("Encode message."); @@ -400,8 +399,7 @@ default EncodedMessage encode(CloudOnboardingParameters parameters) { }); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl( - CloudVirtualizedAppRegistration.OnboardingRequest.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); String encodedMessage = @@ -439,8 +437,7 @@ default EncodedMessage encode(CloudOffboardingParameters parameters) { parameters.getOnboardingResponse())); PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl( - CloudVirtualizedAppRegistration.OffboardingRequest.getDescriptor().getFullName()); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); diff --git a/ci/settings.xml b/ci/settings.xml index 10fb3aa7..49859926 100644 --- a/ci/settings.xml +++ b/ci/settings.xml @@ -35,5 +35,15 @@ DKE-Data ${GITHUB_TOKEN} + + github-api-protobuf-definitions + DKE-Data + ${GITHUB_TOKEN} + + + github-tmt-protobuf-definitions + DKE-Data + ${GITHUB_TOKEN} + diff --git a/pom.xml b/pom.xml index 05ea02bf..400742d0 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ github GitHub DKE-Data Apache Maven Packages - https://maven.pkg.github.com/DKE-Data/agrirouter-api-protobuf-definitions + https://maven.pkg.github.com/DKE-Data/* @@ -129,6 +129,13 @@ ${agrirouter-api-protobuf-definitions.version} + + + com.agrirouter.proto + agrirouter-tmt-protobuf-definitions + 2.0.0 + + io.rest-assured From 3c4676f9ad92c39da9b20f27904ad50fdbdb5c90 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 28 Jun 2021 09:24:34 +0200 Subject: [PATCH 2/3] Update ContentMessageType.kt --- .../com/dke/data/agrirouter/api/enums/ContentMessageType.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt index 6f2df23e..81f87c65 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt @@ -10,7 +10,7 @@ enum class ContentMessageType(private val key: String, private val typeUrl: Stri //FIXME Since the spec is not public, we can only use those literals. ISO_11783_DEVICE_DESCRIPTION("iso:11783:-10:device_description:protobuf", "types.agrirouter.com\\efdi.ISO11783_TaskData"), - ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com\\efdi.ISO11783_TaskData"), + ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com\efdi.TimeLog"), SHP_SHAPE_ZIP("shp:shape:zip", ""), DOC_PDF("doc:pdf", ""), From ed243534199c8e2e123d494ea9b75f683fe7966e Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 28 Jun 2021 10:43:41 +0200 Subject: [PATCH 3/3] Update ContentMessageType.kt --- .../com/dke/data/agrirouter/api/enums/ContentMessageType.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt index 81f87c65..bc16d73a 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt @@ -10,7 +10,7 @@ enum class ContentMessageType(private val key: String, private val typeUrl: Stri //FIXME Since the spec is not public, we can only use those literals. ISO_11783_DEVICE_DESCRIPTION("iso:11783:-10:device_description:protobuf", "types.agrirouter.com\\efdi.ISO11783_TaskData"), - ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com\efdi.TimeLog"), + ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com\\efdi.TimeLog"), SHP_SHAPE_ZIP("shp:shape:zip", ""), DOC_PDF("doc:pdf", ""),