mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-12-23 13:07:59 +01:00
1 KiB
1 KiB
General Rules
All classes which subclass TopLevelStreamElement
and ExtensionElement
must either
- be immutable (and ideally provide a Builder)
- implement
TypedCloneable
and must be Serializable
.
The reason that it must be either 1. or 2. is that it makes no sense to clone an inmutable instance.
The preferred option is 1.
Note that there is legacy code in Smack which does not follow these rules. Patches are welcome.
ExtensionElement
Extension elements are XML elements that are used in various parts and levels of stanzas.
The static from(Stanza)
Method
Every ExtensionElement class must have a static from()
method that retrieves that extension for a given Stanza (if any).
Sample Code
public static RSMSet from(Stanza) {
return packet.getExtension(ELEMENT, NAMESPACE);
}
Sometimes certain ExtensionElement's are only found in one stanza type, in that case, specify the parameter type. For example public static CarbonExtension getFrom(Message)
.