1 /* 2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.security.cert; 27 28 /** 29 * A selector that defines a set of criteria for selecting 30 * {@code Certificate}s. Classes that implement this interface 31 * are often used to specify which {@code Certificate}s should 32 * be retrieved from a {@code CertStore}. 33 * <p> 34 * <b>Concurrent Access</b> 35 * <p> 36 * Unless otherwise specified, the methods defined in this interface are not 37 * thread-safe. Multiple threads that need to access a single 38 * object concurrently should synchronize amongst themselves and 39 * provide the necessary locking. Multiple threads each manipulating 40 * separate objects need not synchronize. 41 * 42 * @see Certificate 43 * @see CertStore 44 * @see CertStore#getCertificates 45 * 46 * @author Steve Hanna 47 * @since 1.4 48 */ 49 public interface CertSelector extends Cloneable { 50 51 /** 52 * Decides whether a {@code Certificate} should be selected. 53 * 54 * @param cert the {@code Certificate} to be checked 55 * @return {@code true} if the {@code Certificate} 56 * should be selected, {@code false} otherwise 57 */ match(Certificate cert)58 boolean match(Certificate cert); 59 60 /** 61 * Makes a copy of this {@code CertSelector}. Changes to the 62 * copy will not affect the original and vice versa. 63 * 64 * @return a copy of this {@code CertSelector} 65 */ clone()66 Object clone(); 67 } 68