1 16 package org.directwebremoting.guice; 17 18 import java.util.Enumeration ; 19 import java.util.HashMap ; 20 import java.util.HashSet ; 21 import java.util.Iterator ; 22 import java.util.Map ; 23 import java.util.Set ; 24 import static java.util.Collections.synchronizedMap ; 25 26 import javax.servlet.ServletConfig ; 27 import javax.servlet.ServletContext ; 28 29 33 class ModifiableServletConfig implements ServletConfig 34 { 35 ModifiableServletConfig(ServletConfig servletConfig) 36 { 37 this.servletConfig = servletConfig; 38 } 39 40 public String getInitParameter(String name) 41 { 42 if (overrides.containsKey(name)) 43 { 44 return overrides.get(name); 45 } 46 else 47 { 48 return servletConfig.getInitParameter(name); 49 } 50 } 51 52 public Enumeration getInitParameterNames() 53 { 54 Set <String > names = new HashSet <String >(); 55 Enumeration enumeration = servletConfig.getInitParameterNames(); 56 while (enumeration.hasMoreElements()) 57 { 58 names.add(enumeration.nextElement().toString()); 59 } 60 names.addAll(overrides.keySet()); 61 return toEnumeration(names.iterator()); 62 } 63 64 public ServletContext getServletContext() 65 { 66 return servletConfig.getServletContext(); 67 } 68 69 public String getServletName() 70 { 71 return servletConfig.getServletName(); 72 } 73 74 public void setInitParameter(String name, String value) 75 { 76 overrides.put(name, value); 77 } 78 79 private static <E> Enumeration <E> toEnumeration(final Iterator <E> iterator) 80 { 81 return new Enumeration <E>() 82 { 83 public boolean hasMoreElements() 84 { 85 return iterator.hasNext(); 86 } 87 88 public E nextElement() 89 { 90 return iterator.next(); 91 } 92 }; 93 } 94 95 private final ServletConfig servletConfig; 96 97 private final Map <String , String > overrides = synchronizedMap(new HashMap <String , String >()); 98 } 99 | Popular Tags |