added SecurityException
This commit is contained in:
parent
ef54fb4c6b
commit
773a88346c
|
@ -67,53 +67,38 @@ public class AuthorizedTasks {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Binds a {@link Runnable} task to the current scope and user.
|
||||
* Execute a runnable inline with set and reset of the SecretManagerProvider
|
||||
* @param task the task
|
||||
* @param secret the secret that must be used in the function
|
||||
* @return an equivalent {@link Runnable} task bound to the current scope and user
|
||||
*/
|
||||
static public void executeSafely(final Runnable task, final Secret secret) throws Throwable {
|
||||
|
||||
SafelyExecution se = new SafelyExecution(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
SecretManagerProvider.instance.set(secret);
|
||||
|
||||
try {
|
||||
logger.info("setting on authorized task context {} ", secret.getContext());
|
||||
task.run();
|
||||
}finally {
|
||||
SecretManagerProvider.instance.reset();
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
se.run();
|
||||
|
||||
if (se.e != null) throw se.e;
|
||||
|
||||
static public void executeSafely(final Runnable task, final Secret secret){
|
||||
Secret previousSecret = SecretManagerProvider.instance.get();
|
||||
try {
|
||||
SecretManagerProvider.instance.set(secret);
|
||||
task.run();
|
||||
} finally {
|
||||
SecretManagerProvider.instance.set(previousSecret);
|
||||
}
|
||||
}
|
||||
|
||||
static private class SafelyExecution extends Thread{
|
||||
|
||||
protected Throwable e;
|
||||
|
||||
public SafelyExecution(Runnable target) {
|
||||
super(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
super.run();
|
||||
}catch (Throwable t) {
|
||||
e = t;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Execute a callable inline with set and reset of the SecretManagerProvider
|
||||
* @param task the task
|
||||
* @param secret the secret that must be used in the function
|
||||
* @return an equivalent {@link Runnable} task bound to the current scope and user
|
||||
*/
|
||||
static public <T> T executeSafely(final Callable<T> task, final Secret secret) throws Throwable {
|
||||
Secret previousSecret = SecretManagerProvider.instance.get();
|
||||
try {
|
||||
SecretManagerProvider.instance.set(secret);
|
||||
return task.call();
|
||||
} finally {
|
||||
SecretManagerProvider.instance.set(previousSecret);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package org.gcube.common.security.exception;
|
||||
|
||||
public class SecurityException extends RuntimeException{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public SecurityException() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public SecurityException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public SecurityException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public SecurityException(String message) {
|
||||
super(message);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public SecurityException(Throwable cause) {
|
||||
super(cause);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue