package com.mossle.security.client; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.mossle.core.util.BeanUtils; import com.mossle.security.api.MethodSourceFetcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.access.SecurityConfig; import org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource; import org.springframework.security.access.method.MapBasedMethodSecurityMetadataSource; import org.springframework.security.access.method.MethodSecurityMetadataSource; /** * @deprecated use MethodResourcePopulator instead. */ @Deprecated public class MethodSourceBuilder { private static Logger logger = LoggerFactory .getLogger(MethodSourceBuilder.class); private DelegatingMethodSecurityMetadataSource delegatingMethodSecurityMetadataSource; private MethodSourceFetcher methodSourceFetcher; public void refresh() { if ((delegatingMethodSecurityMetadataSource == null) || (methodSourceFetcher == null)) { logger.info( "delegatingMethodSecurityMetadataSource : {}, methodSourceFetcher : {}", delegatingMethodSecurityMetadataSource, methodSourceFetcher); return; } logger.info("execute refresh"); Map<String, List<ConfigAttribute>> methodMap = null; methodMap = new LinkedHashMap<String, List<ConfigAttribute>>(); Map<String, String> resourceMap = methodSourceFetcher.getSource(null); for (Map.Entry<String, String> entry : resourceMap.entrySet()) { methodMap.put(entry.getKey(), SecurityConfig .createListFromCommaDelimitedString(entry.getValue())); } MethodSecurityMetadataSource source = new MapBasedMethodSecurityMetadataSource( methodMap); List<MethodSecurityMetadataSource> sources = new ArrayList<MethodSecurityMetadataSource>(); sources.add(source); List<MethodSecurityMetadataSource> methodSecurityMetadataSources = delegatingMethodSecurityMetadataSource .getMethodSecurityMetadataSources(); methodSecurityMetadataSources.clear(); methodSecurityMetadataSources.addAll(sources); Map attributeCache = (Map) BeanUtils.safeGetFieldValue( delegatingMethodSecurityMetadataSource, "attributeCache"); attributeCache.clear(); } public void setDelegatingMethodSecurityMetadataSource( DelegatingMethodSecurityMetadataSource delegatingMethodSecurityMetadataSource) { this.delegatingMethodSecurityMetadataSource = delegatingMethodSecurityMetadataSource; } public void setMethodSourceFetcher(MethodSourceFetcher methodSourceFetcher) { this.methodSourceFetcher = methodSourceFetcher; } }