001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.command;
017
018
019 /**
020 * Indicates that an object is not a valid member of a {@link CommandGroup}.
021 *
022 * <p>
023 * Usually, a command group member will be a subclass of {@link AbstractCommand}, however some
024 * command group implementations may define more specific rules about what types of members they
025 * will accept.
026 * </p>
027 *
028 * @author Kevin Stembridge
029 * @since 0.3
030 *
031 */
032 public class InvalidGroupMemberException extends CommandException {
033
034 private static final long serialVersionUID = 7891614557214887191L;
035
036 private final Class invalidMemberClass;
037 private final Class commandGroupClass;
038
039 private static String createDefaultMessage(Class invalidMemberClass, Class commandGroupClass) {
040
041 return "An object of type ["
042 + invalidMemberClass
043 + "] is not a valid member for a group of type ["
044 + commandGroupClass
045 + "]";
046
047 }
048
049 /**
050 * Creates a new {@code InvalidGroupMemberException}.
051 *
052 * @param invalidMemberClass The class of the invalid member.
053 * @param commandGroupClass The class of the command group that the member is not valid for.
054 */
055 public InvalidGroupMemberException(Class invalidMemberClass, Class commandGroupClass) {
056 super(createDefaultMessage(invalidMemberClass, commandGroupClass));
057 this.invalidMemberClass = invalidMemberClass;
058 this.commandGroupClass = commandGroupClass;
059 }
060
061 /**
062 * Creates a new {@code InvalidGroupMemberException}.
063 *
064 * @param message The detail message.
065 * @param invalidMemberClass The class of the invalid member.
066 * @param commandGroupClass The class of the command group that the member is invalid for.
067 */
068 public InvalidGroupMemberException(String message, Class invalidMemberClass, Class commandGroupClass) {
069 this(message, invalidMemberClass, commandGroupClass, null);
070 }
071
072 /**
073 * Creates a new {@code InvalidGroupMemberException}.
074 *
075 * @param message The detail message.
076 * @param invalidMemberClass The class of the invalid member.
077 * @param commandGroupClass The class of the command group that the member is invalid for.
078 * @param cause The nested exception.
079 */
080 public InvalidGroupMemberException(String message,
081 Class invalidMemberClass,
082 Class commandGroupClass,
083 Throwable cause) {
084
085 super(message, cause);
086 this.invalidMemberClass = invalidMemberClass;
087 this.commandGroupClass = commandGroupClass;
088
089 }
090
091 /**
092 * Returns the class of the command group that the member is invalid for.
093 * @return Returns the value of the commandGroupClass field, possibly null.
094 */
095 public Class getCommandGroupClass() {
096 return this.commandGroupClass;
097 }
098
099 /**
100 * Returns the class of the invalid member.
101 * @return Returns the value of the invalidMemberClass field, possibly null.
102 */
103 public Class getInvalidMemberClass() {
104 return this.invalidMemberClass;
105 }
106
107 }