001/*-------------------------------------------------------------------------+ 002| | 003| Copyright 2005-2011 The ConQAT Project | 004| | 005| Licensed under the Apache License, Version 2.0 (the "License"); | 006| you may not use this file except in compliance with the License. | 007| You may obtain a copy of the License at | 008| | 009| http://www.apache.org/licenses/LICENSE-2.0 | 010| | 011| Unless required by applicable law or agreed to in writing, software | 012| distributed under the License is distributed on an "AS IS" BASIS, | 013| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 014| See the License for the specific language governing permissions and | 015| limitations under the License. | 016+-------------------------------------------------------------------------*/ 017package org.conqat.lib.commons.reflect; 018 019import java.util.Comparator; 020 021/** 022 * This comparator orders formal parameters by their position within the formal 023 * parameter list of the defining method. This comparator raises an exception if 024 * the the compared parameters do not belong to the same method. 025 * 026 * 027 * @author Florian Deissenboeck 028 */ 029public class FormalParameterComparator implements Comparator<FormalParameter> { 030 031 /** 032 * Compae formal parameters by their position within the formal parameter 033 * list of the defining method. 034 * 035 * @throws IllegalArgumentException 036 * if parameters belong to different methods. 037 */ 038 @Override 039 public int compare(FormalParameter p1, FormalParameter p2) throws IllegalArgumentException { 040 if (!p1.getMethod().equals(p2.getMethod())) { 041 throw new IllegalArgumentException("Parameters must belong to same method"); 042 } 043 return p1.getPosition() - p2.getPosition(); 044 } 045}