Provide a MultiUserChat method to create *or* join a room
Description
Some MUC service implementations (e.g. Prosody) behave different as defined in XEP-45 when a client tries to enter a non-existent room: They don't created a locked room and return a 201 status code, but instead behave like the room already existed.
Smack assumes that if a non-existent room is created, by calling MutliUserChat.create(String), a presence with the 201 status code is returned. However this status code is not returned by certain implementations in certain situations, causing Smack to assume the room already existed and aborts the creation procedure by leaving the room.
In order to ease the situation for Smack users, MultiUserChat should be extended with a method to create or join a room, as this is the use-case of the majority of users.
Some MUC service implementations (e.g. Prosody) behave different as defined in XEP-45 when a client tries to enter a non-existent room: They don't created a locked room and return a 201 status code, but instead behave like the room already existed.
Smack assumes that if a non-existent room is created, by calling MutliUserChat.create(String), a presence with the 201 status code is returned. However this status code is not returned by certain implementations in certain situations, causing Smack to assume the room already existed and aborts the creation procedure by leaving the room.
In order to ease the situation for Smack users, MultiUserChat should be extended with a method to create or join a room, as this is the use-case of the majority of users.
See also:
https://code.google.com/p/lxmppd/issues/detail?id=328