src/jdk/internal/dynalink/GuardedInvocationFilter.java

Tue, 26 Jan 2016 08:38:37 -0800

author
asaha
date
Tue, 26 Jan 2016 08:38:37 -0800
changeset 1845
f0507b7c27f2
parent 963
e2497b11a021
permissions
-rw-r--r--

Added tag jdk8u40-b33 for changeset 0130b5cb16e0

attila@963 1 /*
attila@963 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
attila@963 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
attila@963 4 *
attila@963 5 * This code is free software; you can redistribute it and/or modify it
attila@963 6 * under the terms of the GNU General Public License version 2 only, as
attila@963 7 * published by the Free Software Foundation. Oracle designates this
attila@963 8 * particular file as subject to the "Classpath" exception as provided
attila@963 9 * by Oracle in the LICENSE file that accompanied this code.
attila@963 10 *
attila@963 11 * This code is distributed in the hope that it will be useful, but WITHOUT
attila@963 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
attila@963 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
attila@963 14 * version 2 for more details (a copy is included in the LICENSE file that
attila@963 15 * accompanied this code).
attila@963 16 *
attila@963 17 * You should have received a copy of the GNU General Public License version
attila@963 18 * 2 along with this work; if not, write to the Free Software Foundation,
attila@963 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
attila@963 20 *
attila@963 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
attila@963 22 * or visit www.oracle.com if you need additional information or have any
attila@963 23 * questions.
attila@963 24 */
attila@963 25
attila@963 26 /*
attila@963 27 * This file is available under and governed by the GNU General Public
attila@963 28 * License version 2 only, as published by the Free Software Foundation.
attila@963 29 * However, the following notice accompanied the original version of this
attila@963 30 * file, and Oracle licenses the original version of this file under the BSD
attila@963 31 * license:
attila@963 32 */
attila@963 33 /*
attila@963 34 Copyright 2009-2013 Attila Szegedi
attila@963 35
attila@963 36 Licensed under both the Apache License, Version 2.0 (the "Apache License")
attila@963 37 and the BSD License (the "BSD License"), with licensee being free to
attila@963 38 choose either of the two at their discretion.
attila@963 39
attila@963 40 You may not use this file except in compliance with either the Apache
attila@963 41 License or the BSD License.
attila@963 42
attila@963 43 If you choose to use this file in compliance with the Apache License, the
attila@963 44 following notice applies to you:
attila@963 45
attila@963 46 You may obtain a copy of the Apache License at
attila@963 47
attila@963 48 http://www.apache.org/licenses/LICENSE-2.0
attila@963 49
attila@963 50 Unless required by applicable law or agreed to in writing, software
attila@963 51 distributed under the License is distributed on an "AS IS" BASIS,
attila@963 52 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
attila@963 53 implied. See the License for the specific language governing
attila@963 54 permissions and limitations under the License.
attila@963 55
attila@963 56 If you choose to use this file in compliance with the BSD License, the
attila@963 57 following notice applies to you:
attila@963 58
attila@963 59 Redistribution and use in source and binary forms, with or without
attila@963 60 modification, are permitted provided that the following conditions are
attila@963 61 met:
attila@963 62 * Redistributions of source code must retain the above copyright
attila@963 63 notice, this list of conditions and the following disclaimer.
attila@963 64 * Redistributions in binary form must reproduce the above copyright
attila@963 65 notice, this list of conditions and the following disclaimer in the
attila@963 66 documentation and/or other materials provided with the distribution.
attila@963 67 * Neither the name of the copyright holder nor the names of
attila@963 68 contributors may be used to endorse or promote products derived from
attila@963 69 this software without specific prior written permission.
attila@963 70
attila@963 71 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
attila@963 72 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
attila@963 73 TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
attila@963 74 PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
attila@963 75 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
attila@963 76 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
attila@963 77 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
attila@963 78 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
attila@963 79 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
attila@963 80 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
attila@963 81 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
attila@963 82 */
attila@963 83
attila@963 84 package jdk.internal.dynalink;
attila@963 85
attila@963 86 import jdk.internal.dynalink.linker.GuardedInvocation;
attila@963 87 import jdk.internal.dynalink.linker.LinkRequest;
attila@963 88 import jdk.internal.dynalink.linker.LinkerServices;
attila@963 89
attila@963 90 /**
attila@963 91 * Interface for objects that are used to transform one guarded invocation into another one. Typical usage is for
attila@963 92 * implementing {@link DynamicLinkerFactory#setPrelinkFilter(GuardedInvocationFilter) pre-link filters}.
attila@963 93 */
attila@963 94 public interface GuardedInvocationFilter {
attila@963 95 /**
attila@963 96 * Given a guarded invocation, return a potentially different guarded invocation.
attila@963 97 * @param inv the original guarded invocation. Null is never passed.
attila@963 98 * @param linkRequest the link request for which the invocation was generated (usually by some linker).
attila@963 99 * @param linkerServices the linker services that can be used during creation of a new invocation.
attila@963 100 * @return either the passed guarded invocation or a different one, with the difference usually determined based on
attila@963 101 * information in the link request and the differing invocation created with the assistance of the linker services.
attila@963 102 * Whether or not {@code null} is an accepted return value is dependent on the user of the filter.
attila@963 103 */
attila@963 104 public GuardedInvocation filter(GuardedInvocation inv, LinkRequest linkRequest, LinkerServices linkerServices);
attila@963 105 }

mercurial