001/** 002 * 003 * Copyright © 2014-2024 Florian Schmaus 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.jivesoftware.smackx.muc; 018 019import org.jivesoftware.smack.SmackException; 020 021import org.jxmpp.jid.DomainBareJid; 022 023public abstract class MultiUserChatException extends SmackException { 024 025 protected MultiUserChatException() { 026 } 027 028 protected MultiUserChatException(String message) { 029 super(message); 030 } 031 032 /** 033 * 034 */ 035 private static final long serialVersionUID = 1L; 036 037 // This could eventually become an unchecked exception. But be aware that it's required in the 038 // control flow of MultiUserChat.createOrJoinIfNecessary 039 public static class MucAlreadyJoinedException extends MultiUserChatException { 040 041 /** 042 * 043 */ 044 private static final long serialVersionUID = 1L; 045 046 } 047 048 /** 049 * Thrown if the requested operation required the MUC to be joined by the 050 * client, while the client is currently joined. 051 * 052 */ 053 public static class MucNotJoinedException extends MultiUserChatException { 054 055 /** 056 * 057 */ 058 private static final long serialVersionUID = 1L; 059 060 public MucNotJoinedException(MultiUserChat multiUserChat) { 061 super("Client not currently joined " + multiUserChat.getRoom()); 062 } 063 } 064 065 public static class MissingMucCreationAcknowledgeException extends MultiUserChatException { 066 067 /** 068 * 069 */ 070 private static final long serialVersionUID = 1L; 071 072 } 073 074 /** 075 * Thrown if the MUC room does not support the requested configuration option. 076 */ 077 public static class MucConfigurationNotSupportedException extends MultiUserChatException { 078 079 /** 080 * 081 */ 082 private static final long serialVersionUID = 1L; 083 084 public MucConfigurationNotSupportedException(String configString) { 085 super("The MUC configuration '" + configString + "' is not supported by the MUC service"); 086 } 087 } 088 089 /** 090 * Thrown when trying to enter a MUC room that is not hosted a domain providing a MUC service. 091 * Try {@link MultiUserChatManager#getMucServiceDomains()} for a list of client-local domains 092 * providing a MUC service. 093 */ 094 public static class NotAMucServiceException extends MultiUserChatException { 095 096 /** 097 * 098 */ 099 private static final long serialVersionUID = 1L; 100 101 NotAMucServiceException(DomainBareJid service) { 102 super("Can't perform operation because " + service 103 + " does not provide a MUC (XEP-45) service."); 104 } 105 106 NotAMucServiceException(MultiUserChat multiUserChat) { 107 super("Can not join '" + multiUserChat.getRoom() + "', because '" 108 + multiUserChat.getRoom().asDomainBareJid() 109 + "' does not provide a MUC (XEP-45) service."); 110 } 111 } 112}