ReadOnlyJavaFixInvokeHandler.java

package com.ziesemer.utils.jmx.server.authorization;

import java.util.HashSet;
import java.util.Set;

import javax.management.ObjectName;

/**
 * @author Mark A. Ziesemer
 * 	<a href="http://www.ziesemer.com.">&lt;www.ziesemer.com&gt;</a>
 * @see ReadOnlyInvokeHandler
 */
public class ReadOnlyJavaFixInvokeHandler extends ReadOnlyInvokeHandler{
	
	protected final Set<ObjectName> problemObjectNames = new HashSet<ObjectName>();
	
	public ReadOnlyJavaFixInvokeHandler(){
		problemObjectNames.add(THREAD_MX_ON);
		problemObjectNames.add(LOGGING_MX_ON);
	}
	
	@Override
	protected boolean isAllow(final JmxAuthorizeContext ac) throws Exception{
		if(super.isAllow(ac)){
			return true;
		}
		final ObjectName on = (ObjectName)ac.args[0];
		final String methodName = (String)ac.args[1];
		if(problemObjectNames.contains(on) && isReadOnlyName(methodName)){
			return true;
		}
		if(THREAD_MX_ON.equals(on) && isThreadReadOnlyName(methodName)){
			return true;
		}
		return false;
	}
}