       1 /*
       2  * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
       3  *
       4  * Redistribution and use in source and binary forms, with or without
       5  * modification, are permitted provided that the following conditions
       6  * are met:
       7  *
       8  *   - Redistributions of source code must retain the above copyright
       9  *     notice, this list of conditions and the following disclaimer.
      10  *
      11  *   - Redistributions in binary form must reproduce the above copyright
      12  *     notice, this list of conditions and the following disclaimer in the
      13  *     documentation and/or other materials provided with the distribution.
      14  *
      15  *   - Neither the name of Oracle nor the names of its
      16  *     contributors may be used to endorse or promote products derived
      17  *     from this software without specific prior written permission.
      18  *
      19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
      20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
      21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
      23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
      24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
      26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
      27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      30  */
      31
      32 package jdk.nashorn.api.linker;
      33
      34 import java.util.List;
      35 import jdk.dynalink.linker.GuardingDynamicLinker;
      36 import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
      37 import jdk.nashorn.internal.runtime.linker.Bootstrap;
      38
      39 /**
      40  * This linker exporter is a service provider that exports Nashorn Dynalink
      41  * linkers to external users. Other language runtimes that use Dynalink
      42  * can use the linkers exported by this provider to support tight integration
      43  * of Nashorn objects.
      44  */
      45 public final class NashornLinkerExporter extends GuardingDynamicLinkerExporter {
      46     /**
      47      * The default constructor.
      48      */
      49     public NashornLinkerExporter() {}
      50
      51     /**
      52      * Returns a list of exported nashorn specific linkers.
      53      *
      54      * @return list of exported nashorn specific linkers
      55      */
      56     @Override
      57     public List<GuardingDynamicLinker> get() {
      58         return Bootstrap.getExposedLinkers();
      59     }
      60 }