package org.infoglue.cms.security; import java.security.AccessControlException; public class BasicMethodAccessManager { public static final void checkAccessToCall(String[] allowedClassNames, String message) { Throwable t = new Throwable(); StackTraceElement[] stackElements = t.getStackTrace(); StackTraceElement calledElement = stackElements[1]; String calledClassName = calledElement.getClassName(); String calledMethodName = calledElement.getMethodName(); StackTraceElement callingElement = stackElements[2]; String className = callingElement.getClassName(); String methodName = callingElement.getMethodName(); boolean acceptedCall = false; for(int i=0; i<allowedClassNames.length; i++) { String allowedClassName = allowedClassNames[i]; if(callingElement.getClassName().equals(allowedClassName)) acceptedCall = true; } if(!acceptedCall) throw new AccessControlException("An access control violation was attempted. Call from " + className + "." + methodName + " was made to " + calledClassName + "." + calledMethodName + "." + message); } }