View Javadoc

1   /*
2    *  jDTAUS Core API
3    *  Copyright (C) 2005 Christian Schulte
4    *  <cs@schulte.it>
5    *
6    *  This library is free software; you can redistribute it and/or
7    *  modify it under the terms of the GNU Lesser General Public
8    *  License as published by the Free Software Foundation; either
9    *  version 2.1 of the License, or any later version.
10   *
11   *  This library is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   *  Lesser General Public License for more details.
15   *
16   *  You should have received a copy of the GNU Lesser General Public
17   *  License along with this library; if not, write to the Free Software
18   *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19   *
20   */
21  package org.jdtaus.core.container;
22  
23  import java.util.Locale;
24  
25  /**
26   * Gets thrown for property overwrite constraint violations.
27   * <p>A {@code Dependency} is allowed to provide values for any properties
28   * declared for its specification only if the specification applies to scope
29   * {@code SCOPE_MULTITON}. An implementation must provide values for all
30   * properties declared for its implemented specifications. This exception gets
31   * thrown for any violations to these restrictions.</p>
32   *
33   * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
34   * @version $JDTAUS: PropertyOverwriteConstraintException.java 8641 2012-09-27 06:45:17Z schulte $
35   *
36   * @see Implementation#getProperties()
37   * @see Dependency#getProperties()
38   */
39  public class PropertyOverwriteConstraintException extends IllegalStateException
40  {
41      //--Constants---------------------------------------------------------------
42  
43      /** Serial version UID for backwards compatibility with 1.2.x classes. */
44      private static final long serialVersionUID = -6382737345293763298L;
45  
46      //---------------------------------------------------------------Constants--
47      //--Constructors------------------------------------------------------------
48  
49      /**
50       * Creates a new {@code PropertyOverwriteConstraintException} instance
51       * taking the identifier of an implementation defining a dependency
52       * providing property values although the specification does not apply to
53       * the multiton scope.
54       *
55       * @param implementationIdentifier identifier of the implementation defining
56       * a dependency violating the constraint.
57       * @param dependencyName name of the dependency defined for the
58       * implementation identified by {@code implementationIdentifier} violating
59       * the constraint.
60       */
61      public PropertyOverwriteConstraintException(
62          final String implementationIdentifier, final String dependencyName )
63      {
64          super( PropertyOverwriteConstraintExceptionBundle.getInstance().
65                 getPropertyOverwriteConstraintMessage( Locale.getDefault(),
66                                                        implementationIdentifier,
67                                                        dependencyName ) );
68  
69          this.implementationIdentifier = implementationIdentifier;
70          this.specificationIdentifier = null;
71          this.dependencyName = dependencyName;
72          this.propertyName = null;
73      }
74  
75      /**
76       * Creates a new {@code PropertyOverwriteConstraintException} instance
77       * taking the identifier of an implementation not implementing a
78       * specification property together with information regarding the
79       * unimplemented property.
80       *
81       * @param implementationIdentifier identifier of the implementation not
82       * implementing a specification property.
83       * @param specificationIdentifier identifier of the specification an
84       * implementation does not implement a property of.
85       * @param propertyName name of the unimplemented property.
86       */
87      public PropertyOverwriteConstraintException(
88          final String implementationIdentifier,
89          final String specificationIdentifier, final String propertyName )
90      {
91          super( PropertyOverwriteConstraintExceptionBundle.getInstance().
92                 getPropertyNotImplementedMessage( Locale.getDefault(),
93                                                   implementationIdentifier,
94                                                   specificationIdentifier,
95                                                   propertyName ) );
96  
97          this.implementationIdentifier = implementationIdentifier;
98          this.specificationIdentifier = specificationIdentifier;
99          this.propertyName = propertyName;
100         this.dependencyName = null;
101     }
102 
103     //------------------------------------------------------------Constructors--
104     //--PropertyOverwriteConstraintException------------------------------------
105 
106     /**
107      * Identifier of the implementation defining a dependency violating the
108      * constraint.
109      * @serial
110      */
111     private final String implementationIdentifier;
112 
113     /**
114      * Identifier of the specification defining a property not implemented by
115      * the implementation.
116      * @serial
117      */
118     private final String specificationIdentifier;
119 
120     /**
121      * Name of the dependency defined for the implementation identified by
122      * property {@code implementationIdentifier} violating the constraint.
123      * @serial
124      */
125     private final String dependencyName;
126 
127     /**
128      * Name of the property not implemented by the implementation.
129      * @serial
130      */
131     private final String propertyName;
132 
133     /**
134      * Gets the identifier of the implementation defining a dependency
135      * violating the constraint.
136      *
137      * @return identifier of the implementation defining a dependency
138      * violating the constraint.
139      */
140     public String getImplementationIdentifier()
141     {
142         return this.implementationIdentifier;
143     }
144 
145     /**
146      * Gets the identifier of the specification defining a property not
147      * implemented by the implementation.
148      *
149      * @return identifier of the specification defining a property not
150      * implemented by the implementation or {@code null}.
151      */
152     public String getSpecificationIdentifier()
153     {
154         return this.specificationIdentifier;
155     }
156 
157     /**
158      * Gets the name of the dependency defined for the implementation identified
159      * by the value of property {@code implementationIdentifier} violating the
160      * constraint.
161      *
162      * @return name of the dependency defined for the implementation identified
163      * by the value of property {@code implementationIdentifier} violating the
164      * constraint or {@code null}.
165      */
166     public String getDependencyName()
167     {
168         return this.dependencyName;
169     }
170 
171     /**
172      * Gets the name of the property not implemented by the implementation.
173      *
174      * @return name of the property not implemented by the implementation or
175      * {@code null}.
176      */
177     public String getPropertyName()
178     {
179         return this.propertyName;
180     }
181 
182     //------------------------------------PropertyOverwriteConstraintException--
183 }