KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > scripting > ScriptFactory


1 /*
2  * Copyright 2002-2007 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.springframework.scripting;
18
19 import java.io.IOException JavaDoc;
20
21 /**
22  * Script definition interface, encapsulating the configuration
23  * of a specific script as well as a factory method for
24  * creating the actual scripted Java <code>Object</code>.
25  *
26  * @author Juergen Hoeller
27  * @author Rob Harrop
28  * @since 2.0
29  * @see #getScriptSourceLocator
30  * @see #getScriptedObject
31  */

32 public interface ScriptFactory {
33
34     /**
35      * Return a locator that points to the source of the script.
36      * Interpreted by the post-processor that actually creates the script.
37      * <p>Typical supported locators are Spring resource locations
38      * (such as "file:C:/myScript.bsh" or "classpath:myPackage/myScript.bsh")
39      * and inline scripts ("inline:myScriptText...").
40      * @return the script source locator
41      * @see org.springframework.scripting.support.ScriptFactoryPostProcessor#convertToScriptSource
42      * @see org.springframework.core.io.ResourceLoader
43      */

44     String JavaDoc getScriptSourceLocator();
45
46     /**
47      * Return the business interfaces that the script is supposed to implement.
48      * <p>Can return <code>null</code> if the script itself determines
49      * its Java interfaces (such as in the case of Groovy).
50      * @return the interfaces for the script
51      */

52     Class JavaDoc[] getScriptInterfaces();
53
54     /**
55      * Return whether the script requires a config interface to be
56      * generated for it. This is typically the case for scripts that
57      * do not determine Java signatures themselves, with no appropriate
58      * config interface specified in <code>getScriptInterfaces()</code>.
59      * @return whether the script requires a generated config interface
60      * @see #getScriptInterfaces()
61      */

62     boolean requiresConfigInterface();
63
64     /**
65      * Factory method for creating the scripted Java object.
66      * <p>Implementations are encouraged to cache script metadata such as
67      * a generated script class. Note that this method may be invoked
68      * concurrently and must be implemented in a thread-safe fashion.
69      * @param scriptSource the actual ScriptSource to retrieve
70      * the script source text from (never <code>null</code>)
71      * @param actualInterfaces the actual interfaces to expose,
72      * including script interfaces as well as a generated config interface
73      * (if applicable; may be <code>null</code>)
74      * @return the scripted Java object
75      * @throws IOException if script retrieval failed
76      * @throws ScriptCompilationException if script compilation failed
77      */

78     Object JavaDoc getScriptedObject(ScriptSource scriptSource, Class JavaDoc[] actualInterfaces)
79             throws IOException JavaDoc, ScriptCompilationException;
80
81     /**
82      * Determine the type of the scripted Java object.
83      * <p>Implementations are encouraged to cache script metadata such as
84      * a generated script class. Note that this method may be invoked
85      * concurrently and must be implemented in a thread-safe fashion.
86      * @param scriptSource the actual ScriptSource to retrieve
87      * the script source text from (never <code>null</code>)
88      * @return the type of the scripted Java object, or <code>null</code>
89      * if none could be determined
90      * @throws IOException if script retrieval failed
91      * @throws ScriptCompilationException if script compilation failed
92      * @since 2.0.3
93      */

94     Class JavaDoc getScriptedObjectType(ScriptSource scriptSource)
95             throws IOException JavaDoc, ScriptCompilationException;
96
97 }
98
Popular Tags