SEC-1434: Remove use of BeanDefinition of type java.lang.String which causes problems in Google App Engine.

This results in the method BeanUtils.findEditorByConvention attempting to get hold of the system classloader which isn't allowed by the security manager in GAE.
This commit is contained in:
Luke Taylor 2010-03-16 02:22:36 +00:00
parent b8e50c0933
commit 59b69f6f48
2 changed files with 6 additions and 8 deletions

View File

@ -83,7 +83,7 @@ class HttpConfigurationBuilder {
private final List<Element> interceptUrls; private final List<Element> interceptUrls;
// Use ManagedMap to allow placeholder resolution // Use ManagedMap to allow placeholder resolution
private ManagedMap<BeanDefinition, List<BeanMetadataElement>> filterChainMap; private ManagedMap<Object, List<BeanMetadataElement>> filterChainMap;
private BeanDefinition cpf; private BeanDefinition cpf;
private BeanDefinition securityContextPersistenceFilter; private BeanDefinition securityContextPersistenceFilter;
@ -109,7 +109,7 @@ class HttpConfigurationBuilder {
} }
void parseInterceptUrlsForEmptyFilterChains() { void parseInterceptUrlsForEmptyFilterChains() {
filterChainMap = new ManagedMap<BeanDefinition, List<BeanMetadataElement>>(); filterChainMap = new ManagedMap<Object, List<BeanMetadataElement>>();
for (Element urlElt : interceptUrls) { for (Element urlElt : interceptUrls) {
String path = urlElt.getAttribute(ATT_PATH_PATTERN); String path = urlElt.getAttribute(ATT_PATH_PATTERN);
@ -464,7 +464,7 @@ class HttpConfigurationBuilder {
return allowSessionCreation; return allowSessionCreation;
} }
public ManagedMap<BeanDefinition, List<BeanMetadataElement>> getFilterChainMap() { public ManagedMap<Object, List<BeanMetadataElement>> getFilterChainMap() {
return filterChainMap; return filterChainMap;
} }

View File

@ -135,10 +135,8 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
filterChain.add(od.bean); filterChain.add(od.bean);
} }
ManagedMap<BeanDefinition, List<BeanMetadataElement>> filterChainMap = httpBldr.getFilterChainMap(); ManagedMap<Object, List<BeanMetadataElement>> filterChainMap = httpBldr.getFilterChainMap();
BeanDefinition universalMatch = new RootBeanDefinition(String.class); filterChainMap.put(matcher.getUniversalMatchPattern(), filterChain);
universalMatch.getConstructorArgumentValues().addGenericArgumentValue(matcher.getUniversalMatchPattern());
filterChainMap.put(universalMatch, filterChain);
registerFilterChainProxy(pc, filterChainMap, matcher, source); registerFilterChainProxy(pc, filterChainMap, matcher, source);
@ -247,7 +245,7 @@ public class HttpSecurityBeanDefinitionParser implements BeanDefinitionParser {
return customFilters; return customFilters;
} }
private void registerFilterChainProxy(ParserContext pc, Map<BeanDefinition, List<BeanMetadataElement>> filterChainMap, UrlMatcher matcher, Object source) { private void registerFilterChainProxy(ParserContext pc, Map<Object, List<BeanMetadataElement>> filterChainMap, UrlMatcher matcher, Object source) {
if (pc.getRegistry().containsBeanDefinition(BeanIds.FILTER_CHAIN_PROXY)) { if (pc.getRegistry().containsBeanDefinition(BeanIds.FILTER_CHAIN_PROXY)) {
pc.getReaderContext().error("Duplicate <http> element detected", source); pc.getReaderContext().error("Duplicate <http> element detected", source);
} }