Ola pessoal,
Eu estou usando Spring Security em minha aplicação, e para setar as roles das url estou usando o seguinte :
XML
<b:bean id="databaseFilterInvocationDefinitionSource"
class="org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource">
<b:constructor-arg type="org.springframework.security.util.UrlMatcher"
ref="antUrlPathMatcher" />
<!-- url authority map -->
<b:constructor-arg type="java.util.LinkedHashMap"
ref="requestMap" />
</b:bean>
<b:bean id="requestMap" class="br.eng.schettini.security.view.RequestMapFactoryBean"
init-method="init">
</b:bean>
Agora no meu Manage Bean o mais importante, onde esta minha duvida:
ManageBean
ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
LinkedHashMap map = (LinkedHashMap) ctx.getBean("requestMap");
RequestKey key;
ConfigAttribute attribute;
ConfigAttributeDefinition definition;
key = new RequestKey("/test.faces");
attribute = new SecurityConfig("ROLE_Admin");
definition = new ConfigAttributeDefinition(attribute);
map.put(key, definition);
Não consigo redifinir LinkedHashMap na minha aplicação rodando. Toda vez que troco as regras de uma pagina tenho que reiniciar o servidor.
Tentei também alterar o LinkedHashMap direto da fonte, porque o bean requestMap e o bean databaseFilterInvocationDefinitionSource contém o linkedHashMap
com objetos diferentes, entao eu tentei assim :
DefaultFilterInvocationDefinitionSource defaultFilter = (DefaultFilterInvocationDefinitionSource) ctx.getBean("databaseFilterInvocationDefinitionSource");
Collection map2 = (Collection) defaultFilter.getConfigAttributeDefinitions();
map2.clear();
O problema nesse caso foi que ele nao deixou eu alterar a coleção. Lançou uma exceção dizendo falando que nao posso alterar essa Collection.
Alguém já passou por esse problema e conseguiu resolve-lo, ou uma dica de como posso cortornar este problema ???