1 /*
2 * Entreri, an entity-component framework in Java
3 *
4 * Copyright (c) 2013, Michael Ludwig
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without modification,
8 * are permitted provided that the following conditions are met:
9 *
10 * Redistributions of source code must retain the above copyright notice,
11 * this list of conditions and the following disclaimer.
12 * Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
20 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
23 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 package com.lhkbob.entreri;
28
29 /**
30 * IllegalComponentDefinitionException is an exception thrown if a Component
31 * implementation does not follow the class hierarchy or field rules defined in {@link
32 * Component}.
33 *
34 * @author Michael Ludwig
35 */
36 public class IllegalComponentDefinitionException extends RuntimeException {
37 private static final long serialVersionUID = 1L;
38
39 private final String componentTypeName;
40
41 /**
42 * Create an exception that specifies the leaf-level class in a Component type
43 * hierarchy has some problem with its definition
44 *
45 * @param componentTypeName The canonical class name of the component type
46 * @param problem A generic error message to be tacked to the end of the
47 * final error message
48 */
49 public IllegalComponentDefinitionException(String componentTypeName, String problem) {
50 super(componentTypeName + " is invalid, error: " + problem);
51 this.componentTypeName = componentTypeName;
52 }
53
54 /**
55 * @return The canonical name of the invalid component type
56 */
57 public String getComponentTypeName() {
58 return componentTypeName;
59 }
60 }