boot/src/main/java/org/apidesign/html/boot/spi/Fn.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 19 Jun 2013 12:52:23 +0200
branchclassloader
changeset 123 8e54b83ea65c
child 124 94dfab239310
permissions -rw-r--r--
Creating bootstraping APIs
     1 /**
     2  * HTML via Java(tm) Language Bindings
     3  * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details. apidesign.org
    13  * designates this particular file as subject to the
    14  * "Classpath" exception as provided by apidesign.org
    15  * in the License file that accompanied this code.
    16  *
    17  * You should have received a copy of the GNU General Public License
    18  * along with this program. Look for COPYING file in the top folder.
    19  * If not, see http://wiki.apidesign.org/wiki/GPLwithClassPathException
    20  */
    21 package org.apidesign.html.boot.spi;
    22 
    23 import java.net.URL;
    24 import java.util.Collection;
    25 import org.apidesign.html.boot.impl.FnUtils;
    26 
    27 /**
    28  *
    29  * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
    30  */
    31 public abstract class Fn {
    32     public static Fn define(Class<?> caller, String code, String... names) {
    33         return FnUtils.define(caller, code, names);
    34     }
    35     
    36     public static ClassLoader newLoader(Finder f, Definer d, ClassLoader parent) {
    37         return FnUtils.newLoader(f, d, parent);
    38     }
    39 
    40     public abstract Object invoke(Object thiz, Object... args) throws Exception;
    41 
    42     
    43     public interface Definer {
    44         Fn defineFn(String code, String... names);
    45     }
    46     
    47     public interface Finder {
    48         public void findResources(String path, Collection<? super URL> results, boolean oneIsEnough);
    49     }
    50 }