1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.springframework.extensions.webscripts.processor;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.springframework.context.ApplicationContextAware;
27 import org.springframework.extensions.surf.core.processor.ProcessorExtension;
28 import org.springframework.extensions.webscripts.MultiScriptLoader;
29 import org.springframework.extensions.webscripts.ScriptLoader;
30 import org.springframework.extensions.webscripts.ScriptProcessor;
31 import org.springframework.extensions.webscripts.SearchPath;
32 import org.springframework.extensions.webscripts.Store;
33 import org.springframework.extensions.webscripts.WebScriptException;
34
35
36
37
38
39
40
41
42 public abstract class AbstractScriptProcessor extends BaseRegisterableScriptProcessor implements ApplicationContextAware, ScriptProcessor
43 {
44
45 private SearchPath searchPath;
46
47
48 private ScriptLoader scriptLoader;
49
50
51
52
53 public void setSearchPath(SearchPath searchPath)
54 {
55 this.searchPath = searchPath;
56 }
57
58
59
60
61
62
63 protected SearchPath getSearchPath()
64 {
65 return this.searchPath;
66 }
67
68
69
70
71
72
73 protected ScriptLoader getScriptLoader()
74 {
75 return this.scriptLoader;
76 }
77
78
79
80
81
82
83 protected void addProcessorModelExtensions(Object model)
84 {
85
86 if (model == null)
87 {
88 model = new HashMap<String, Object>();
89 }
90 if (model instanceof Map)
91 {
92
93 for (ProcessorExtension ex : this.processorExtensions.values())
94 {
95 ((Map<String, Object>)model).put(ex.getExtensionName(), ex);
96 }
97 }
98 }
99
100
101
102
103 protected void initLoaders()
104 {
105 List<ScriptLoader> loaders = new ArrayList<ScriptLoader>(searchPath.getStores().size());
106 for (Store apiStore : searchPath.getStores())
107 {
108 ScriptLoader loader = apiStore.getScriptLoader();
109 if (loader == null)
110 {
111 throw new WebScriptException("Unable to retrieve script loader for Web Script store " + apiStore.getBasePath());
112 }
113 loaders.add(loader);
114 }
115 this.scriptLoader = new MultiScriptLoader(loaders.toArray(new ScriptLoader[loaders.size()]));
116 }
117
118
119
120
121 public void init()
122 {
123 this.initLoaders();
124 }
125
126
127
128
129 public void register()
130 {
131 this.getScriptProcessorRegistry().registerScriptProcessor(this);
132 }
133 }