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 implementation incompatibilities.
27   * <p>An {@code Implementation} is required to implement and to depend on a
28   * specification version compatible with the version in use. This exception
29   * gets thrown for any implementation implementing or depending on a
30   * specification version incompatible with the version in use.</p>
31   *
32   * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
33   * @version $JDTAUS: IncompatibleImplementationException.java 8743 2012-10-07 03:06:20Z schulte $
34   *
35   * @see Specification#getVersion()
36   * @see Implementation#getImplementedSpecifications()
37   */
38  public class IncompatibleImplementationException
39      extends IllegalStateException
40  {
41      //--Constants---------------------------------------------------------------
42  
43      /** Serial version UID for backwards compatibility with 1.5.x classes. */
44      private static final long serialVersionUID = 4329145399712314886L;
45  
46      //---------------------------------------------------------------Constants--
47      //--Constructors------------------------------------------------------------
48  
49      /**
50       * Creates a new {@code IncompatibleImplementationException} instance
51       * taking the implementation not implementing the specification version in
52       * use or depending on a specification version incompatible to the
53       * version in use.
54       *
55       * @param specificationIdentifier the identifier of the specification.
56       * @param specifiedVersion the version of the specification in use.
57       * @param implementationIdentifier the identifier of the implementation
58       * incompatible to {@code specifiedVersion}.
59       * @param implementedVersion the version implemented or {@code null} if
60       * the implementation does not implement the specification.
61       * @param requiredVersion the version the implementation depends on or
62       * {@code null} if the implementation does not depend on the specification.
63       */
64      public IncompatibleImplementationException(
65          final String specificationIdentifier,
66          final String specifiedVersion,
67          final String implementationIdentifier,
68          final String implementedVersion,
69          final String requiredVersion )
70      {
71          super( IncompatibleImplementationExceptionBundle.getInstance().
72              getIncompatibleImplementationMessage(
73              Locale.getDefault(),
74              implementedVersion != null ? new Integer( 0 ) : new Integer( 1 ),
75              specificationIdentifier, specifiedVersion, implementationIdentifier,
76              implementedVersion, requiredVersion ) );
77  
78          this.specificationIdentifier = specificationIdentifier;
79          this.specifiedVersion = specifiedVersion;
80          this.implementationIdentifier = implementationIdentifier;
81          this.implementedVersion = implementedVersion;
82          this.requiredVersion = requiredVersion;
83      }
84  
85      //------------------------------------------------------------Constructors--
86      //--IncompatibleImplementationException-------------------------------------
87  
88      /**
89       * The identifier of the specification.
90       * @serial
91       */
92      private final String specificationIdentifier;
93  
94      /**
95       * The version of the specification in use.
96       * @serial
97       */
98      private final String specifiedVersion;
99  
100     /**
101      * The identifier of the implementation not implementing the specification
102      * version in use.
103      * @serial
104      */
105     private final String implementationIdentifier;
106 
107     /**
108      * The implemented version of the specification in use or {@code null} if
109      * the implementation does not implement the specification.
110      * @serial
111      */
112     private final String implementedVersion;
113 
114     /**
115      * The version the implementation depends on or {@code null} if the
116      * implementation does not depend on the specification.
117      * @serial
118      */
119     private final String requiredVersion;
120 
121     /**
122      * Gets the identifier of the specification.
123      *
124      * @return the identifier of the specification.
125      */
126     public String getSpecificationIdentifier()
127     {
128         return this.specificationIdentifier;
129     }
130 
131     /**
132      * Gets the version of the specification in use.
133      *
134      * @return the version of the specification in use.
135      */
136     public String getSpecifiedVersion()
137     {
138         return this.specifiedVersion;
139     }
140 
141     /**
142      * Gets the identifier of the implementation not implementing the
143      * specification version in use.
144      *
145      * @return the identifier of the implementation not implementing the
146      * specification version in use.
147      */
148     public String getImplementationIdentifier()
149     {
150         return this.implementationIdentifier;
151     }
152 
153     /**
154      * Gets the implemented version of the specification in use.
155      *
156      * @return the implemented version of the specification in use or
157      * {@code null} if the implementation does not implement the specification.
158      */
159     public String getImplementedVersion()
160     {
161         return this.implementedVersion;
162     }
163 
164     /**
165      * Gets the required version of the specification in use.
166      *
167      * @return the version the implementation depends on or {@code null} if the
168      * implementation does not depend on the specification.
169      */
170     public String getRequiredVersion()
171     {
172         return this.requiredVersion;
173     }
174 
175     //-------------------------------------IncompatibleImplementationException--
176 }