View Javadoc

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  }