From adc159186ca1a2d3f18061e74a6bf791b708e074 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Sun, 14 Mar 2021 17:58:13 +0100 Subject: [PATCH] [formtypes] Introduce LOOKASIDE_FIELD_REGISTRY Some field's like stream-method of XEP-0096, which is of type list-single, need to be pre-registered. --- .../smackx/formtypes/FormFieldRegistry.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java index 97156974f..9eab79b73 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java @@ -36,6 +36,8 @@ public class FormFieldRegistry { private static final Map CLARK_NOTATION_FIELD_REGISTRY = new ConcurrentHashMap<>(); + private static final Map LOOKASIDE_FIELD_REGISTRY = new ConcurrentHashMap<>(); + @SuppressWarnings("ReferenceEquality") public static void register(DataForm dataForm) { // TODO: Also allow forms of type 'result'? @@ -98,11 +100,11 @@ public class FormFieldRegistry { public static FormField.Type lookup(String formType, String fieldName) { if (formType == null) { - if (!XmlUtil.isClarkNotation(fieldName)) { - return null; + if (XmlUtil.isClarkNotation(fieldName)) { + return CLARK_NOTATION_FIELD_REGISTRY.get(fieldName); } - return CLARK_NOTATION_FIELD_REGISTRY.get(fieldName); + return LOOKASIDE_FIELD_REGISTRY.get(fieldName); } synchronized (REGISTRY) { @@ -122,4 +124,7 @@ public class FormFieldRegistry { return lookup(null, fieldName); } + public static void addLookasideFieldRegistryEntry(String fieldName, FormField.Type formFieldType) { + LOOKASIDE_FIELD_REGISTRY.put(fieldName, formFieldType); + } }