added SecurityException

This commit is contained in:
Lucio Lelii 2022-06-15 16:51:29 +02:00
parent ef54fb4c6b
commit 773a88346c
2 changed files with 64 additions and 43 deletions

View File

@ -69,51 +69,36 @@ 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() {
static public void executeSafely(final Runnable task, final Secret secret){
Secret previousSecret = SecretManagerProvider.instance.get();
try {
SecretManagerProvider.instance.set(secret);
try {
logger.info("setting on authorized task context {} ", secret.getContext());
task.run();
}finally {
SecretManagerProvider.instance.reset();
} finally {
SecretManagerProvider.instance.set(previousSecret);
}
}
}
});
se.run();
if (se.e != null) throw se.e;
}
static private class SafelyExecution extends Thread{
protected Throwable e;
public SafelyExecution(Runnable target) {
super(target);
}
@Override
public void run() {
/**
* 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 {
super.run();
}catch (Throwable t) {
e = t;
SecretManagerProvider.instance.set(secret);
return task.call();
} finally {
SecretManagerProvider.instance.set(previousSecret);
}
}
}
}

View File

@ -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
}
}