View Javadoc
1   package org.eclipse.aether.internal.impl;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   * 
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   * 
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  final class PrioritizedComponent<T>
23      implements Comparable<PrioritizedComponent<?>>
24  {
25  
26      private final T component;
27  
28      private final Class<?> type;
29  
30      private final float priority;
31  
32      private final int index;
33  
34      PrioritizedComponent( T component, Class<?> type, float priority, int index )
35      {
36          this.component = component;
37          this.type = type;
38          this.priority = priority;
39          this.index = index;
40      }
41  
42      public T getComponent()
43      {
44          return component;
45      }
46  
47      public Class<?> getType()
48      {
49          return type;
50      }
51  
52      public float getPriority()
53      {
54          return priority;
55      }
56  
57      public boolean isDisabled()
58      {
59          return Float.isNaN( priority );
60      }
61  
62      public int compareTo( PrioritizedComponent<?> o )
63      {
64          int rel = ( isDisabled() ? 1 : 0 ) - ( o.isDisabled() ? 1 : 0 );
65          if ( rel == 0 )
66          {
67              rel = Float.compare( o.priority, priority );
68              if ( rel == 0 )
69              {
70                  rel = index - o.index;
71              }
72          }
73          return rel;
74      }
75  
76      @Override
77      public String toString()
78      {
79          return priority + " (#" + index + "): " + component;
80      }
81  
82  }