001/* 002 * Copyright (c) 2016-2017 Chris K Wensel <chris@wensel.net>. All Rights Reserved. 003 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved. 004 * 005 * Project and contact information: http://www.cascading.org/ 006 * 007 * This file is part of the Cascading project. 008 * 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 */ 021 022package cascading.tuple; 023 024import java.util.Comparator; 025 026/** 027 * The Comparison interface allows specific underlying type mechanisms to additionally return relevant 028 * {@link Comparator} implementations when required internally. 029 * <p> 030 * In the case of Hadoop, {@link org.apache.hadoop.io.serializer.Serialization} implementations that present 031 * alternative serialization implementations for custom types manged by {@link Tuple}s should also 032 * implement the {@link #getComparator(Class)} method. 033 * <p> 034 * During runtime Cascading can identify and use the correct Comparator during grouping operations if it was 035 * not given explicitly on the {@link Fields#setComparator(Comparable, java.util.Comparator)} family of methods. 036 * <p> 037 * See the class {@link cascading.tuple.hadoop.BytesSerialization} for an example. 038 * <p> 039 * see cascading.tuple.hadoop.BytesSerialization 040 */ 041public interface Comparison<T> 042 { 043 Comparator<T> getComparator( Class<T> type ); 044 }