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 cyclic dependency graphs.
27   *
28   * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
29   * @version $JDTAUS: DependencyCycleException.java 8743 2012-10-07 03:06:20Z schulte $
30   */
31  public class DependencyCycleException extends IllegalStateException
32  {
33      //--Constants---------------------------------------------------------------
34  
35      /** Serial version UID for backwards compatibility with 1.5.x classes. */
36      private static final long serialVersionUID = 8471828485552467121L;
37  
38      //---------------------------------------------------------------Constants--
39      //--Constructors------------------------------------------------------------
40  
41      /**
42       * Creates a new {@code DependencyCycleException} taking the involved
43       * implementations.
44       *
45       * @param impl1 the implementation the cycle was detected for.
46       * @param impl2 the implementation introducing the cycle to {@code impl1}.
47       *
48       * @throws NullPointerException if either {@code impl1} or {@code impl2}
49       * is {@code null}.
50       */
51      public DependencyCycleException( final Implementation impl1,
52                                       final Implementation impl2 )
53      {
54          super( DependencyCycleExceptionBundle.getInstance().
55                 getDependencyCycleMessage( Locale.getDefault(),
56                                            impl1.getIdentifier(),
57                                            impl2.getIdentifier() ) );
58  
59          this.implementations = new Implementation[]
60              {
61                  impl1, impl2
62              };
63      }
64  
65      /**
66       * Creates a new {@code DependencyCycleException} taking identifiers of the
67       * involved implementations.
68       *
69       * @param identifier1 the identifier of the implementation the cycle was
70       * detected for.
71       * @param identifier2 the identifier of the implementation introducing the
72       * cycle.
73       *
74       * @throws NullPointerException if either {@code identifier1} or
75       * {@code identifier2} is {@code null}.
76       */
77      public DependencyCycleException( final String identifier1,
78                                       final String identifier2 )
79      {
80          super( DependencyCycleExceptionBundle.getInstance().
81                 getDependencyCycleMessage( Locale.getDefault(),
82                                            identifier1,
83                                            identifier2 ) );
84  
85          this.implementations = null;
86      }
87  
88      //------------------------------------------------------------Constructors--
89      //--DependencyCycleException------------------------------------------------
90  
91      /**
92       * The implementations introducing a cycle.
93       * @serial
94       */
95      private final Implementation[] implementations;
96  
97      /**
98       * Gets the implementation introducing a cycle.
99       *
100      * @return the implementations introducing a cycle.
101      */
102     public Implementation[] getImplementations()
103     {
104         return this.implementations;
105     }
106 
107     //------------------------------------------------DependencyCycleException--
108 }