From cdbf08683c31037213a47c7a390f03fab5822244 Mon Sep 17 00:00:00 2001 From: Ricki Hirner Date: Thu, 18 Jan 2024 12:29:23 +0100 Subject: [PATCH] Add Topic property --- .../at/bitfire/dav4jvm/PropertyRegistry.kt | 4 ++- .../at/bitfire/dav4jvm/property/push/Topic.kt | 35 +++++++++++++++++++ .../bitfire/dav4jvm/property/WebPushTest.kt | 9 +++-- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/at/bitfire/dav4jvm/property/push/Topic.kt diff --git a/src/main/kotlin/at/bitfire/dav4jvm/PropertyRegistry.kt b/src/main/kotlin/at/bitfire/dav4jvm/PropertyRegistry.kt index 770a05e..6ed08ec 100644 --- a/src/main/kotlin/at/bitfire/dav4jvm/PropertyRegistry.kt +++ b/src/main/kotlin/at/bitfire/dav4jvm/PropertyRegistry.kt @@ -25,6 +25,7 @@ import at.bitfire.dav4jvm.property.carddav.AddressbookHomeSet import at.bitfire.dav4jvm.property.carddav.SupportedAddressData import at.bitfire.dav4jvm.property.push.PushSubscribe import at.bitfire.dav4jvm.property.push.PushTransports +import at.bitfire.dav4jvm.property.push.Topic import at.bitfire.dav4jvm.property.webdav.AddMember import at.bitfire.dav4jvm.property.webdav.CreationDate import at.bitfire.dav4jvm.property.webdav.CurrentUserPrincipal @@ -92,7 +93,8 @@ object PropertyRegistry { SupportedCalendarComponentSet.Factory, SupportedCalendarData.Factory, SupportedReportSet.Factory, - SyncToken.Factory + SyncToken.Factory, + Topic.Factory )) } diff --git a/src/main/kotlin/at/bitfire/dav4jvm/property/push/Topic.kt b/src/main/kotlin/at/bitfire/dav4jvm/property/push/Topic.kt new file mode 100644 index 0000000..bb2f830 --- /dev/null +++ b/src/main/kotlin/at/bitfire/dav4jvm/property/push/Topic.kt @@ -0,0 +1,35 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package at.bitfire.dav4jvm.property.push + +import at.bitfire.dav4jvm.Property +import at.bitfire.dav4jvm.PropertyFactory +import at.bitfire.dav4jvm.XmlUtils +import org.xmlpull.v1.XmlPullParser + +class Topic private constructor( + val topic: String +): Property { + + companion object { + + @JvmField + val NAME = Property.Name(NS_WEBDAV_PUSH, "topic") + + } + + + object Factory: PropertyFactory { + + override fun getName() = NAME + + override fun create(parser: XmlPullParser) = + Topic(XmlUtils.requireReadText(parser)) + + } + +} \ No newline at end of file diff --git a/src/test/kotlin/at/bitfire/dav4jvm/property/WebPushTest.kt b/src/test/kotlin/at/bitfire/dav4jvm/property/WebPushTest.kt index 309c123..dae0841 100644 --- a/src/test/kotlin/at/bitfire/dav4jvm/property/WebPushTest.kt +++ b/src/test/kotlin/at/bitfire/dav4jvm/property/WebPushTest.kt @@ -4,6 +4,7 @@ import at.bitfire.dav4jvm.Property import at.bitfire.dav4jvm.property.push.NS_WEBDAV_PUSH import at.bitfire.dav4jvm.property.push.PushSubscribe import at.bitfire.dav4jvm.property.push.PushTransports +import at.bitfire.dav4jvm.property.push.Topic import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test @@ -28,18 +29,22 @@ class WebPushTest: PropertyTest() { } @Test - fun testPushTransports() { + fun testServiceDetection() { val results = parseProperty( "" + " " + " " + - "") + "" + + "SomeTopic") val result = results.first() as PushTransports + assertEquals(setOf( Property.Name(NS_WEBDAV_PUSH, "something"), PushTransports.WEB_PUSH ), result.transports) assertTrue(result.hasWebPush()) + + assertEquals("SomeTopic", (results[1] as Topic).topic) } } \ No newline at end of file