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