/** * Start time:09:19:15 2009-04-16<br> * Project: mobicents-jainslee-server-core<br> * * @author <a href="mailto:baranowb@gmail.com">baranowb - Bartosz Baranowski * </a> * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a> */ package org.mobicents.slee.container.management.jmx; import java.security.AccessControlContext; import java.security.AccessController; import java.security.Policy; import java.security.PrivilegedAction; import java.util.Timer; import java.util.TimerTask; import org.jboss.system.ServiceMBeanSupport; import org.mobicents.slee.container.SleeContainer; import org.mobicents.slee.container.component.security.PolicyFile; /** * Start time:09:19:15 2009-04-16<br> * Project: mobicents-jainslee-server-core<br> * * @author <a href="mailto:baranowb@gmail.com">baranowb - Bartosz Baranowski * </a> */ public class PolicyMBeanImpl extends ServiceMBeanSupport implements PolicyMBeanImplMBean { /** * Holds defualt policy object */ private Policy previousPolicy = null; private PolicyFile mPolicyFile = new PolicyFile(); public String getCodeSources() { return this.mPolicyFile.getCodeSources(); } public String getPolicyFilesURL() { return this.mPolicyFile.getPolicyFilesURL(); } public boolean isUseMPolicy() { return Policy.getPolicy() instanceof PolicyFile; } public void setUseMPolicy(boolean useMPolicy) { if (useMPolicy) { // we have to check :) if (previousPolicy != null) { super.log.info("Already switched policy, not performing switch"); return; } if (isUseMPolicy()) { super.log.info("Already switched policy from different bean, not performing switch"); return; } this.previousPolicy = Policy.getPolicy(); //AccessControlContext acc = AccessController.getContext(); //AccessController.doPrivileged(new PrivilegedAction22(this.mPolicyFile)); this.mPolicyFile.refresh(); Policy.setPolicy(this.mPolicyFile); } else { if (!isUseMPolicy()) { super.log.info("Policy is not Mobicents policy, can not remove it."); return; } // we have to check :) if (previousPolicy == null) { super.log.info("Default policy is not present, ca not switch."); return; } this.previousPolicy.refresh(); Policy.setPolicy(this.previousPolicy); } } @Override protected void startService() throws Exception { // TODO Auto-generated method stub super.startService(); } @Override protected void stopService() throws Exception { // TODO Auto-generated method stub super.stopService(); this.setUseMPolicy(false); } }