changelog shortlog tags changeset files revisions annotate raw

src/script/GenericScriptFactory.java

changeset 8: 846b10b4db8a
parent:af0edff8750f
author: jason@briggs.net.nz
date: Thu Nov 01 21:59:09 2007 +1300 (2 years ago)
permissions: -rw-r--r--
description: add readme.txt
1package script;
2
3import java.io.IOException;
4
5import org.springframework.beans.factory.BeanClassLoaderAware;
6import org.springframework.scripting.ScriptCompilationException;
7import org.springframework.scripting.ScriptFactory;
8import org.springframework.scripting.ScriptSource;
9import org.springframework.util.Assert;
10
11/**
12 * Base class for script factories.
13 *
14 * @author jason
15 */
16public abstract class GenericScriptFactory implements ScriptFactory, BeanClassLoaderAware {
17
18 private final String scriptSourceLocator;
19
20 private Object scriptResult;
21 private String beanName;
22 private Class[] returnType = null;
23
24 private final Object scriptClassMonitor = new Object();
25
26 public GenericScriptFactory(String scriptSourceLocator, String beanName, Class returnType) {
27 Assert.hasText(scriptSourceLocator, "'scriptSourceLocator' must not be empty");
28 Assert.hasText(beanName, "'beanName' must not be empty");
29
30 this.scriptSourceLocator = scriptSourceLocator;
31 this.beanName = beanName;
32 if (returnType != null) {
33 this.returnType = new Class[]{ returnType };
34 }
35 }
36
37 public void setBeanClassLoader(ClassLoader classLoader) {
38 }
39
40 public String getScriptSourceLocator() {
41 return this.scriptSourceLocator;
42 }
43
44 public Class[] getScriptInterfaces() {
45 return returnType;
46 }
47
48 public boolean requiresConfigInterface() {
49 return false;
50 }
51
52 public Class getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException {
53 synchronized (this.scriptClassMonitor) {
54 if (this.scriptResult == null || scriptSource.isModified()) {
55 return null;
56 }
57 return this.scriptResult.getClass();
58 }
59 }
60
61 protected Object getScriptResult() {
62 return scriptResult;
63 }
64
65 protected void setScriptResult(Object scriptResult) {
66 this.scriptResult = scriptResult;
67 }
68
69 protected String getBeanName() {
70 return beanName;
71 }
72
73 protected Object getScriptClassMonitor() {
74 return scriptClassMonitor;
75 }
76
77 public abstract Object getScriptedObject(ScriptSource scriptSource, Class[] actualInterfaces) throws IOException, ScriptCompilationException;
78}