/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.function;
import org.apache.commons.lang.StringUtils;
import com.opengamma.sesame.Environment;
import com.opengamma.sesame.config.FunctionArguments;
import com.opengamma.util.result.FailureStatus;
import com.opengamma.util.result.Result;
/**
* Function to handle the situation where the user does not have permission to view an input.
* <p>
* This handles permission denied on trades, positions and securities.
* It always returns a failure result with status {@link FailureStatus#PERMISSION_DENIED}.
* <p>
* This class is immutable and thread-safe.
*/
public class PermissionDeniedFunction implements InvokableFunction {
/**
* The message.
*/
private final String _message;
/**
* Creates the function.
*
* @param message the message to include in the result of the function
*/
public PermissionDeniedFunction(String message) {
_message = StringUtils.defaultIfBlank(message, "Unknown reason");
}
//-------------------------------------------------------------------------
/**
* Always returns a failure result with status {@link FailureStatus#PERMISSION_DENIED}.
*
* @param env ignored
* @param input ignored
* @param args ignored
* @return a failure result with status {@link FailureStatus#PERMISSION_DENIED}
*/
@Override
public Object invoke(Environment env, Object input, FunctionArguments args) {
return Result.failure(FailureStatus.PERMISSION_DENIED, "Permission Denied: {}", _message);
}
@Override
public Object getReceiver() {
return this;
}
@Override
public Object getUnderlyingReceiver() {
return this;
}
@Override
public Class<?> getDeclaringClass() {
return getClass();
}
//-------------------------------------------------------------------------
@Override
public String toString() {
return "PERMISSION_DENIED: " + _message;
}
}