From 91e8d47cdc631b4984e9ae9b4b4a7801856b15d5 Mon Sep 17 00:00:00 2001 From: Kai Hudalla Date: Fri, 24 Oct 2025 16:18:53 +0200 Subject: [PATCH] [#210] Update to up-spec v1.6.0-alpha.7 * Updated up-spec submodule to v1.6.0-alpha.7 tag * Updated links to specification documents * Removed obsolete Gherking feature files * Enabled protobuf related UUID Gherkin features --- README.adoc | 8 +- .../usubscription/v3/USubscriptionClient.java | 2 +- .../uprotocol/communication/Notifier.java | 2 +- .../uprotocol/communication/Publisher.java | 2 +- .../uprotocol/communication/RpcClient.java | 2 +- .../uprotocol/communication/RpcServer.java | 2 +- .../uprotocol/communication/Subscriber.java | 2 +- .../uprotocol/transport/UListener.java | 2 +- .../uprotocol/transport/UTransport.java | 6 +- .../uri/serializer/UriSerializer.java | 10 +- .../uprotocol/uuid/factory/UuidFactory.java | 2 +- .../uprotocol/uuid/factory/UuidUtils.java | 2 +- .../org/eclipse/uprotocol/uri/UuriTests.java | 11 +-- .../org/eclipse/uprotocol/uuid/UuidTests.java | 2 +- .../features/uuri_pattern_matching.feature | 71 -------------- .../features/uuri_uri_serialization.feature | 92 ------------------- up-spec | 2 +- 17 files changed, 25 insertions(+), 195 deletions(-) delete mode 100644 src/test/resources/features/uuri_pattern_matching.feature delete mode 100644 src/test/resources/features/uuri_uri_serialization.feature diff --git a/README.adoc b/README.adoc index 279aa17..13cb610 100644 --- a/README.adoc +++ b/README.adoc @@ -4,7 +4,7 @@ [.specitem,oft-sid="uman~up-java-readme~1",oft-covers="req~up-language-documentation~1",tags="LanguageLibrary"] == Overview -This is the https://github.com/eclipse-uprotocol/uprotocol-spec/blob/v1.6.0-alpha.6/languages.adoc[uProtocol v1.6.0-alpha.6 Language Library] for the Java programming language. The library is organized into packages that are described in <> below and organized by the layers of the protocol. +This is the https://github.com/eclipse-uprotocol/uprotocol-spec/blob/v1.6.0-alpha.7/languages.adoc[uProtocol v1.6.0-alpha.7 Language Library] for the Java programming language. The library is organized into packages that are described in <> below and organized by the layers of the protocol. Each package folder contains a `README.adoc` file that describes the purpose of the package and how to use it. @@ -38,15 +38,15 @@ The following dependency needs to be added to your Maven POM file, setting `${up | xref:src/main/java/org/eclipse/uprotocol/client/README.adoc[`*client*`] | Top level client-facing interfaces to communication with USubscription, UDiscovery, and UTwin services. -| https://github.com/eclipse-uprotocol/up-spec/blob/v1.6.0-alpha.6/up-l3/README.adoc[Application Layer (uP-L3)] +| https://github.com/eclipse-uprotocol/up-spec/blob/v1.6.0-alpha.7/up-l3/README.adoc[Application Layer (uP-L3)] | xref:src/main/java/org/eclipse/uprotocol/communication/README.adoc[`*communication*`] | Common implementation of communication messaging patterns (publisher, subscriber, RpcClient, RpcServer, etc..) that are built on top of the L1 transport interface (see below). -| https://github.com/eclipse-uprotocol/up-spec/blob/v1.6.0-alpha.6/up-l2/api.adoc[Communication Layer (uP-L2)] +| https://github.com/eclipse-uprotocol/up-spec/blob/v1.6.0-alpha.7/up-l2/api.adoc[Communication Layer (uP-L2)] | xref:src/main/java/org/eclipse/uprotocol/transport/README.adoc[`*transport*`] | Interface and data model for how to send() and receive() messages in a common way across various transport technologies (ex. zenoh, mqtt, http, etc...). the interface is implemented by transports (ex. up-transport-android-java), and the interface is then used to build the uProtocol layer 2 communication layer implementation. -| https://github.com/eclipse-uprotocol/uprotocol-spec/blob/v1.6.0-alpha.6/up-l1/README.adoc[Transport Layer (uP-L1)] +| https://github.com/eclipse-uprotocol/uprotocol-spec/blob/v1.6.0-alpha.7/up-l1/README.adoc[Transport Layer (uP-L1)] | xref:src/main/java/org/eclipse/uprotocol/uri/README.adoc[`*uuri*`] | uProtocol addressing scheme (UUri) builders, validators, and serializers. diff --git a/src/main/java/org/eclipse/uprotocol/client/usubscription/v3/USubscriptionClient.java b/src/main/java/org/eclipse/uprotocol/client/usubscription/v3/USubscriptionClient.java index 32967f9..921221c 100644 --- a/src/main/java/org/eclipse/uprotocol/client/usubscription/v3/USubscriptionClient.java +++ b/src/main/java/org/eclipse/uprotocol/client/usubscription/v3/USubscriptionClient.java @@ -32,7 +32,7 @@ /** * The client-side interface for interacting with a USubscription service instance. * - * @see + * @see * USubscription service specification */ public interface USubscriptionClient { diff --git a/src/main/java/org/eclipse/uprotocol/communication/Notifier.java b/src/main/java/org/eclipse/uprotocol/communication/Notifier.java index 3a089e2..63f8385 100644 --- a/src/main/java/org/eclipse/uprotocol/communication/Notifier.java +++ b/src/main/java/org/eclipse/uprotocol/communication/Notifier.java @@ -21,7 +21,7 @@ /** * A client for sending Notification messages to a uEntity. * - * @see + * @see * Communication Layer API Specifications */ // [impl->dsn~communication-layer-api-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/communication/Publisher.java b/src/main/java/org/eclipse/uprotocol/communication/Publisher.java index 89839ee..4653f41 100644 --- a/src/main/java/org/eclipse/uprotocol/communication/Publisher.java +++ b/src/main/java/org/eclipse/uprotocol/communication/Publisher.java @@ -17,7 +17,7 @@ /** * A client for publishing messages to a topic. * - * @see + * @see * Communication Layer API Specifications */ // [impl->dsn~communication-layer-api-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/communication/RpcClient.java b/src/main/java/org/eclipse/uprotocol/communication/RpcClient.java index ecf8d9f..4ee770c 100644 --- a/src/main/java/org/eclipse/uprotocol/communication/RpcClient.java +++ b/src/main/java/org/eclipse/uprotocol/communication/RpcClient.java @@ -19,7 +19,7 @@ /** * A client for performing Remote Procedure Calls (RPC) on (other) uEntities. * - * @see + * @see * Communication Layer API specification */ // [impl->dsn~communication-layer-api-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/communication/RpcServer.java b/src/main/java/org/eclipse/uprotocol/communication/RpcServer.java index 81f205f..ac5a231 100644 --- a/src/main/java/org/eclipse/uprotocol/communication/RpcServer.java +++ b/src/main/java/org/eclipse/uprotocol/communication/RpcServer.java @@ -21,7 +21,7 @@ /** * A server for exposing Remote Procedure Call (RPC) endpoints. * - * @see + * @see * Communication Layer API specification */ // [impl->dsn~communication-layer-api-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/communication/Subscriber.java b/src/main/java/org/eclipse/uprotocol/communication/Subscriber.java index e720724..11b7011 100644 --- a/src/main/java/org/eclipse/uprotocol/communication/Subscriber.java +++ b/src/main/java/org/eclipse/uprotocol/communication/Subscriber.java @@ -25,7 +25,7 @@ /** * A client for subscribing to topics. * - * @see + * @see * Communication Layer API Specifications */ // [impl->dsn~communication-layer-api-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/transport/UListener.java b/src/main/java/org/eclipse/uprotocol/transport/UListener.java index a016ff8..ea068f2 100644 --- a/src/main/java/org/eclipse/uprotocol/transport/UListener.java +++ b/src/main/java/org/eclipse/uprotocol/transport/UListener.java @@ -19,7 +19,7 @@ * * Implementations contain the details for what should occur when a message is received. * - * @see + * @see * uProtocol Transport Layer specification */ // [impl->dsn~ulistener-declaration~1] diff --git a/src/main/java/org/eclipse/uprotocol/transport/UTransport.java b/src/main/java/org/eclipse/uprotocol/transport/UTransport.java index 50841d2..8c0a996 100644 --- a/src/main/java/org/eclipse/uprotocol/transport/UTransport.java +++ b/src/main/java/org/eclipse/uprotocol/transport/UTransport.java @@ -27,7 +27,7 @@ * UTransport implementations contain the details for connecting to the underlying transport technology and * sending UMessage using the configured technology. * - * @see + * @see * uProtocol Transport Layer specification */ // [impl->dsn~utransport-declaration~1] @@ -48,7 +48,7 @@ public interface UTransport { *

* The listener will be invoked for each message that matches the given source filter pattern * according to the rules defined by the - * UUri + * UUri * specification. *

* This default implementation invokes {@link #registerListener(UUri, Optional, UListener)} with the @@ -71,7 +71,7 @@ default CompletionStage registerListener(UUri sourceFilter, UListener list *

* The listener will be invoked for each message that matches the given source and sink filter patterns * according to the rules defined by the - * UUri + * UUri * specification. * * @param sourceFilter The source address pattern that messages need to match. diff --git a/src/main/java/org/eclipse/uprotocol/uri/serializer/UriSerializer.java b/src/main/java/org/eclipse/uprotocol/uri/serializer/UriSerializer.java index 2784c4f..0273ab3 100644 --- a/src/main/java/org/eclipse/uprotocol/uri/serializer/UriSerializer.java +++ b/src/main/java/org/eclipse/uprotocol/uri/serializer/UriSerializer.java @@ -23,7 +23,7 @@ * Provides functionality for serializing and deserializing {@link UUri}s to/from their * corresponding URI representation as defined by the uProtocol specification. * - * @see + * @see * uProtocol URI Specification */ public final class UriSerializer { @@ -50,7 +50,7 @@ private UriSerializer() { * @throws IllegalArgumentException if the UUri does not comply with the UUri specification. */ // [impl->dsn~uri-authority-mapping~1] - // [impl->dsn~uri-path-mapping~1] + // [impl->dsn~uri-path-mapping~2] // [impl->req~uri-serialization~1] public static String serialize(UUri uuri) { return serialize(uuri, false); @@ -69,7 +69,7 @@ public static String serialize(UUri uuri) { * @throws IllegalArgumentException if the UUri does not comply with the UUri specification. */ // [impl->dsn~uri-authority-mapping~1] - // [impl->dsn~uri-path-mapping~1] + // [impl->dsn~uri-path-mapping~2] // [impl->req~uri-serialization~1] public static String serialize(UUri uuri, boolean includeScheme) { Objects.requireNonNull(uuri); @@ -102,7 +102,7 @@ public static String serialize(UUri uuri, boolean includeScheme) { * @throws IllegalArgumentException if the URI is invalid. */ // [impl->dsn~uri-scheme~1] - // [impl->dsn~uri-path-mapping~1] + // [impl->dsn~uri-path-mapping~2] // [impl->req~uri-serialization~1] // [impl->dsn~uri-authority-mapping~1] public static UUri deserialize(String uProtocolUri) { @@ -120,7 +120,7 @@ public static UUri deserialize(String uProtocolUri) { * @throws IllegalArgumentException if the URI is invalid. */ // [impl->dsn~uri-scheme~1] - // [impl->dsn~uri-path-mapping~1] + // [impl->dsn~uri-path-mapping~2] // [impl->req~uri-serialization~1] // [impl->dsn~uri-authority-mapping~1] public static UUri deserialize(URI uProtocolUri) { diff --git a/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidFactory.java b/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidFactory.java index a524c02..5265185 100644 --- a/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidFactory.java +++ b/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidFactory.java @@ -21,7 +21,7 @@ /** * A factory for creating uProtocol UUIDs. * - * @see + * @see * uProtocol UUID Specification */ // [impl->dsn~uuid-spec~1] diff --git a/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidUtils.java b/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidUtils.java index e150344..f75ead8 100644 --- a/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidUtils.java +++ b/src/main/java/org/eclipse/uprotocol/uuid/factory/UuidUtils.java @@ -57,7 +57,7 @@ private static boolean isRfc9562Variant(UUID uuid) { * @return {@code true} if is a uProtocol UUID or {@code false} if uuid is {@code null} * or is not a v7 UUID. * @see RFC 9562 - * @see + * @see * uProtocol UUID specification */ public static boolean isUProtocol(UUID uuid) { diff --git a/src/test/java/org/eclipse/uprotocol/uri/UuriTests.java b/src/test/java/org/eclipse/uprotocol/uri/UuriTests.java index 4173593..2ec6ad3 100644 --- a/src/test/java/org/eclipse/uprotocol/uri/UuriTests.java +++ b/src/test/java/org/eclipse/uprotocol/uri/UuriTests.java @@ -22,7 +22,6 @@ import org.eclipse.uprotocol.v1.UUri; import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.IncludeEngines; -import org.junit.platform.suite.api.SelectClasspathResource; import org.junit.platform.suite.api.SelectFile; import org.junit.platform.suite.api.Suite; @@ -38,17 +37,11 @@ @Suite @IncludeEngines("cucumber") // [utest->dsn~uri-pattern-matching~2] -// TODO: replace with feature from up-spec once the referenced version contains fixes -// see https://github.com/eclipse-uprotocol/up-spec/issues/302 -// @SelectFile("up-spec/basics/uuri_pattern_matching.feature") -@SelectClasspathResource("features/uuri_pattern_matching.feature") +@SelectFile("up-spec/basics/uuri_pattern_matching.feature") // [utest->req~uri-data-model-proto~1] @SelectFile("up-spec/basics/uuri_protobuf_serialization.feature") // [utest->req~uri-serialization~1] -// TODO: replace with feature from up-spec once the referenced version contains missing examples -// see https://github.com/eclipse-uprotocol/up-spec/issues/300 -// @SelectFile("up-spec/basics/uuri_uri_serialization.feature") -@SelectClasspathResource("features/uuri_uri_serialization.feature") +@SelectFile("up-spec/basics/uuri_uri_serialization.feature") @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "org.eclipse.uprotocol.uri") public class UuriTests { diff --git a/src/test/java/org/eclipse/uprotocol/uuid/UuidTests.java b/src/test/java/org/eclipse/uprotocol/uuid/UuidTests.java index c457440..9a9104a 100644 --- a/src/test/java/org/eclipse/uprotocol/uuid/UuidTests.java +++ b/src/test/java/org/eclipse/uprotocol/uuid/UuidTests.java @@ -34,7 +34,7 @@ @Suite @IncludeEngines("cucumber") // [utest->req~uuid-proto~1] -// @SelectFile("up-spec/basics/uuid_protobuf_serialization.feature") +@SelectFile("up-spec/basics/uuid_protobuf_serialization.feature") // [utest->req~uuid-hex-and-dash~1] @SelectFile("up-spec/basics/uuid_string_serialization.feature") @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "org.eclipse.uprotocol.uuid") diff --git a/src/test/resources/features/uuri_pattern_matching.feature b/src/test/resources/features/uuri_pattern_matching.feature deleted file mode 100644 index 62d8d3f..0000000 --- a/src/test/resources/features/uuri_pattern_matching.feature +++ /dev/null @@ -1,71 +0,0 @@ -# -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-FileType: SOURCE -# SPDX-License-Identifier: Apache-2.0 -# -Feature: Matching endpoint identifiers (UUri) against patterns - - Scenario Outline: - Developers using a uProtocol language library should be able to verify that a specific - endpoint identifier matches a given pattern as specified by the UUri specification. - - [utest->dsn~uri-pattern-matching~2] - - Given a URI string - When deserializing the URI to a UUri - Then the UUri matches pattern - - Examples: - | uri | pattern | - | "/1/1/A1FB" | /1/1/A1FB | - | "/1/1/A1FB" | //*/1/1/A1FB | - | "/1/1/A1FB" | /FFFF/1/A1FB | - | "/1/1/A1FB" | //*/FFFF/1/A1FB | - | "/1/1/A1FB" | /FFFFFFFF/1/A1FB | - | "/1/1/A1FB" | //*/FFFFFFFF/1/A1FB | - | "/1/1/A1FB" | /1/FF/A1FB | - | "/1/1/A1FB" | //*/1/FF/A1FB | - | "/1/1/A1FB" | /1/1/FFFF | - | "/1/1/A1FB" | //*/1/1/FFFF | - | "/1/1/A1FB" | /FFFFFFFF/FF/FFFF | - | "/1/1/A1FB" | //*/FFFFFFFF/FF/FFFF | - | "/10001/1/A1FB" | /10001/1/A1FB | - | "/10001/1/A1FB" | //*/10001/1/A1FB | - | "/10001/1/A1FB" | /FFFFFFFF/1/A1FB | - | "/10001/1/A1FB" | //*/FFFFFFFF/1/A1FB | - | "/10001/1/A1FB" | /FFFFFFFF/FF/FFFF | - | "/10001/1/A1FB" | //*/FFFFFFFF/FF/FFFF | - | "//vcu.my_vin/1/1/A1FB" | //vcu.my_vin/1/1/A1FB | - | "//vcu.my_vin/1/1/A1FB" | //*/1/1/A1FB | - - Scenario Outline: - Developers using a uProtocol language library should be able to verify that a specific - endpoint identifier does not match a given pattern as specified by the UUri specification. - - [utest->dsn~uri-pattern-matching~2] - - Given a URI string - When deserializing the URI to a UUri - Then the UUri does not match pattern - - Examples: - | uri | pattern | - | "/1/1/A1FB" | //mcu1/1/1/A1FB | - | "//vcu.my_vin/1/1/A1FB" | //mcu1/1/1/A1FB | - | "//vcu/B1A5/1/A1FB" | //vc/FFFFFFFF/FF/FFFF | - | "/B1A5/1/A1FB" | //*/25B1/FF/FFFF | - | "/B1A5/1/A1FB" | //*/FFFFFFFF/2/FFFF | - | "/B1A5/1/A1FB" | //*/FFFFFFFF/FF/ABCD | - | "/B1A5/1/A1FB" | /25B1/1/A1FB | - | "/B1A5/1/A1FB" | /2B1A5/1/A1FB | - | "/10B1A5/1/A1FB" | /40B1A5/1/A1FB | - | "/B1A5/1/A1FB" | /B1A5/4/A1FB | - | "/B1A5/1/A1FB" | /B1A5/1/90FB | diff --git a/src/test/resources/features/uuri_uri_serialization.feature b/src/test/resources/features/uuri_uri_serialization.feature deleted file mode 100644 index b007428..0000000 --- a/src/test/resources/features/uuri_uri_serialization.feature +++ /dev/null @@ -1,92 +0,0 @@ -# -# Copyright (c) 2025 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-FileType: SOURCE -# SPDX-License-Identifier: Apache-2.0 -# -Feature: String representation of endpoint identfiers (UUri) - - Scenario Outline: - Developers using a uProtocol language library should be able to get the URI - string representation of a UUri instance as specified by the UUri specification. - - [utest->req~uri-serialization~1] - [utest->dsn~uri-scheme~1] - [utest->dsn~uri-host-only~2] - [utest->dsn~uri-authority-mapping~1] - [utest->dsn~uri-path-mapping~1] - - Given a UUri having authority - And having entity identifier - And having major version - And having resource identifier - When serializing the UUri to a URI - Then the resulting URI string is - And the original UUri can be recreated from the URI string - - Examples: - | authority_name | entity_id | version | resource_id | uri_string | - | "" | 0x00000001 | 0x01 | 0xa1fb | up:/1/1/A1FB | - | "192.168.1.1" | 0x00000001 | 0x01 | 0xa1fb | up://192.168.1.1/1/1/A1FB | - | "[2001::7]" | 0x00000001 | 0x01 | 0xa1fb | up://[2001::7]/1/1/A1FB | - | "my_vin" | 0x10000001 | 0x02 | 0x001a | up://my_vin/10000001/2/1A | - | "*" | 0x00000101 | 0xa0 | 0xa1fb | up://*/101/A0/A1FB | - | "mcu1" | 0x0000FFFF | 0x01 | 0xa1fb | up://mcu1/FFFF/1/A1FB | - | "vcu.my_vin" | 0x01a40101 | 0x01 | 0x8000 | up://vcu.my_vin/1A40101/1/8000 | - | "vcu.my_vin" | 0xFFFF0101 | 0x01 | 0xa1fb | up://vcu.my_vin/FFFF0101/1/A1FB | - | "vcu.my_vin" | 0xFFFFFFFF | 0x01 | 0xa1fb | up://vcu.my_vin/FFFFFFFF/1/A1FB | - | "vcu.my_vin" | 0x00000101 | 0x00 | 0xa1fb | up://vcu.my_vin/101/0/A1FB | - | "vcu.my_vin" | 0x00000101 | 0xFF | 0xa1fb | up://vcu.my_vin/101/FF/A1FB | - | "vcu.my_vin" | 0x00000101 | 0x01 | 0x0000 | up://vcu.my_vin/101/1/0 | - | "vcu.my_vin" | 0x00000101 | 0x01 | 0xFFFF | up://vcu.my_vin/101/1/FFFF | - - Scenario Outline: - Developers using a uProtocol language library should not be able to create a UUri from a - URI string that does not comply with the UUri specification. - - [utest->req~uri-serialization~1] - [utest->dsn~uri-scheme~1] - [utest->dsn~uri-host-only~2] - [utest->dsn~uri-authority-mapping~1] - [utest->dsn~uri-path-mapping~1] - - Given a URI string - When deserializing the URI to a UUri - Then the attempt fails - - Examples: - | uri_string | reason for failure | - | "" | not a URI | - | " " | not a URI | - | "$$" | not a URI | - | "up:" | not a URI | - | "up:/" | not a URI | - | "/" | not a URI | - | "//" | not a URI | - | "//vcu.my_vin" | just an authority | - | "//vcu.my_vin//1/A1FB" | missing entity ID | - | "//vcu.my_vin/101//A1FB" | missing version | - | "//vcu.my_vin/101/1/" | missing resource ID | - | "up://vcu.my_vin/101/1/A/unexpected" | too many path segments | - | "xy://vcu.my_vin/101/1/A" | unsupported schema | - | "//vcu.my_vin/101/1/A?foo=bar" | URI with query | - | "//vcu.my_vin/101/1/A#foo" | URI with fragment | - | "//VCU.my-vin/101/1/A" | server-based authority with upper-case letters | - | "//vcu.my-vin:1516/101/1/A" | server-based authority with port | - | "//user:pwd@vcu.my-vin/101/1/A" | server-based authority with user info | - | "//[2001:db87aa::8]/101/1/A" | invalid IP literal authority | - | "//MY_VIN/101/1/A" | registry-based authority with uppercase characters | - | "//reg_based:1516/101/1/A" | registry-based authority name with invalid characters | - | "up://vcu.my-vin/1G1/1/A1FB" | non-hex entity ID | - | "/123456789/1/A1FB" | entity ID exceeds max length | - | "up:/101/G/A1FB" | non-hex version | - | "//vcu.my-vin/101/123/A1FB" | version exceeds max length | - | "/101/1/G1FB" | non-hex resource ID | - | "up://vcu.my-vin/101/1/12345" | resource ID exceeds max length | diff --git a/up-spec b/up-spec index 3130bc5..347d684 160000 --- a/up-spec +++ b/up-spec @@ -1 +1 @@ -Subproject commit 3130bc5bfe661f60509b9d5e1d03995d608a18b2 +Subproject commit 347d68438afd9e4813193b243dc98fb42963ad99