1 16 17 package org.directwebremoting.spring; 18 19 import java.util.Iterator ; 20 import java.util.List ; 21 import java.util.Map ; 22 import java.util.Properties ; 23 24 import org.directwebremoting.AjaxFilter; 25 import org.directwebremoting.Container; 26 import org.directwebremoting.extend.AccessControl; 27 import org.directwebremoting.extend.AjaxFilterManager; 28 import org.directwebremoting.extend.Configurator; 29 import org.directwebremoting.extend.ConverterManager; 30 import org.directwebremoting.extend.Creator; 31 import org.directwebremoting.extend.CreatorManager; 32 import org.directwebremoting.impl.SignatureParser; 33 import org.directwebremoting.util.LocalUtil; 34 import org.directwebremoting.util.Messages; 35 import org.springframework.util.StringUtils; 36 37 40 public class SpringConfigurator implements Configurator 41 { 42 45 public void configure(Container container) 46 { 47 AccessControl accessControl = (AccessControl) container.getBean(AccessControl.class.getName()); 48 AjaxFilterManager ajaxFilterManager = (AjaxFilterManager) container.getBean(AjaxFilterManager.class.getName()); 49 ConverterManager converterManager = (ConverterManager) container.getBean(ConverterManager.class.getName()); 50 CreatorManager creatorManager = (CreatorManager) container.getBean(CreatorManager.class.getName()); 51 52 if (creatorTypes != null) 54 { 55 for (Iterator it = creatorTypes.entrySet().iterator(); it.hasNext();) 56 { 57 Map.Entry entry = (Map.Entry ) it.next(); 58 String typeName = (String ) entry.getKey(); 59 String className = (String ) entry.getValue(); 60 61 creatorManager.addCreatorType(typeName, className); 62 } 63 } 64 65 if (converterTypes != null) 67 { 68 for (Iterator it = converterTypes.entrySet().iterator(); it.hasNext();) 69 { 70 Map.Entry entry = (Map.Entry ) it.next(); 71 String typeName = (String ) entry.getKey(); 72 String className = (String ) entry.getValue(); 73 74 converterManager.addConverterType(typeName, className); 75 } 76 } 77 78 if (creators != null) 80 { 81 try 82 { 83 for (Iterator it = creators.entrySet().iterator(); it.hasNext();) 84 { 85 Map.Entry entry = (Map.Entry ) it.next(); 86 String scriptName = (String ) entry.getKey(); 87 CreatorConfig creatorConfig = (CreatorConfig) entry.getValue(); 88 89 if (creatorConfig.getCreator() != null) 90 { 91 Creator creator = creatorConfig.getCreator(); 92 creatorManager.addCreator(scriptName, creator); 93 } 94 else 95 { 96 String creatorName = creatorConfig.getCreatorType(); 97 Map params = creatorConfig.getParams(); 98 creatorManager.addCreator(scriptName, creatorName, params); 99 } 100 101 List excludes = creatorConfig.getExcludes(); 102 for (Iterator eit = excludes.iterator(); eit.hasNext();) 103 { 104 String exclude = (String ) eit.next(); 105 accessControl.addExcludeRule(scriptName, exclude); 106 } 107 108 List includes = creatorConfig.getIncludes(); 109 for (Iterator iit = includes.iterator(); iit.hasNext();) 110 { 111 String include = (String ) iit.next(); 112 accessControl.addIncludeRule(scriptName, include); 113 } 114 115 Properties auth = creatorConfig.getAuth(); 116 for (Iterator ait = auth.entrySet().iterator(); ait.hasNext();) 117 { 118 Map.Entry aentry = (Map.Entry ) ait.next(); 119 String methodName = (String ) aentry.getKey(); 120 String role = (String ) aentry.getValue(); 121 accessControl.addRoleRestriction(scriptName, methodName, role); 122 } 123 124 List filters = creatorConfig.getFilters(); 125 for (Iterator fit = filters.iterator(); fit.hasNext();) 126 { 127 Object obj = fit.next(); 128 if (obj instanceof String ) 129 { 130 String filterName = (String ) obj; 131 132 AjaxFilter filter = (AjaxFilter) LocalUtil.classNewInstance(filterName, filterName, AjaxFilter.class); 133 if (filter != null) 134 { 135 ajaxFilterManager.addAjaxFilter(filter, scriptName); 136 } 137 } 138 else if (obj instanceof AjaxFilter) 139 { 140 AjaxFilter filter = (AjaxFilter) obj; 141 ajaxFilterManager.addAjaxFilter(filter, scriptName); 142 } 143 else 144 { 145 throw new IllegalArgumentException (Messages.getString("SpringConfigurator.InvalidFilter", scriptName, obj)); 146 } 147 } 148 } 149 } 150 catch (Exception ex) 151 { 152 ex.printStackTrace(); 153 throw new IllegalArgumentException (ex.toString()); 154 } 155 } 156 157 if (converters != null) 159 { 160 try 161 { 162 for (Iterator it = converters.entrySet().iterator(); it.hasNext();) 163 { 164 Map.Entry entry = (Map.Entry ) it.next(); 165 String match = (String ) entry.getKey(); 166 ConverterConfig converterConfig = (ConverterConfig) entry.getValue(); 167 Map params = converterConfig.getParams(); 168 if (converterConfig.getIncludes().size() > 0) 169 { 170 params.put("include", StringUtils.collectionToCommaDelimitedString( 171 converterConfig.getIncludes())); 172 } 173 174 if (converterConfig.getExcludes().size() > 0) 175 { 176 params.put("exclude", StringUtils.collectionToCommaDelimitedString( 177 converterConfig.getExcludes())); 178 } 179 180 if (StringUtils.hasText(converterConfig.getJavascriptClassName())) { 182 params.put("javascript", converterConfig.getJavascriptClassName()); 183 } 184 converterManager.addConverter(match, converterConfig.getType(), params); 185 } 186 } 187 catch (Exception ex) 188 { 189 throw new IllegalArgumentException (Messages.getString("SpringConfigurator.ConfigureConverterError")); 190 } 191 } 192 193 if (StringUtils.hasText(signatures)) { 195 SignatureParser sigp = new SignatureParser(converterManager, creatorManager); 196 sigp.parse(signatures); 197 } 198 } 199 200 204 public void setCreatorTypes(Map creatorTypes) 205 { 206 this.creatorTypes = creatorTypes; 207 } 208 209 213 public void setConverterTypes(Map converterTypes) 214 { 215 this.converterTypes = converterTypes; 216 } 217 218 222 public void setCreators(Map creators) 223 { 224 this.creators = creators; 225 } 226 227 231 public void setConverters(Map converters) 232 { 233 this.converters = converters; 234 } 235 236 239 public void setSignatures(String signatures) 240 { 241 this.signatures = signatures; 242 } 243 244 247 public String getSignatures() 248 { 249 return signatures; 250 } 251 252 255 private Map creatorTypes; 256 257 260 private Map converterTypes; 261 262 265 private Map creators; 266 267 270 private Map converters; 271 272 275 private String signatures; 276 }
| Popular Tags
|