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