blob: 6b393c4664235345e969beb212c43cbf7689d698 [file] [log] [blame]
package org.eclipse.osbp.persistence.fragment;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.osbp.core.api.persistence.IPersistenceException;
import org.eclipse.osbp.core.api.persistence.PersistenceExceptionEvent;
import org.eclipse.persistence.exceptions.ExceptionHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PersistenceExceptionHandler implements IPersistenceException, ExceptionHandler {
private List<IPersistenceException.Receiver> exceptionReceiver = new ArrayList<>();
private static Logger log = LoggerFactory.getLogger(PersistenceExceptionHandler.class);
@Override
public Object handleException(RuntimeException exception) {
log.debug("{}", exception);
String message = exception.getMessage();
if(exception.getCause() != null) {
message = exception.getCause().getMessage();
}
log.debug("the number of registrated receivers is: {}", exceptionReceiver.size());
PersistenceExceptionEvent event = new PersistenceExceptionEvent(message, true);
exceptionReceiver.forEach(it -> it.exceptionEvent(event));
throw exception;
}
@Override
public void registerNotification(IPersistenceException.Receiver receiver) {
log.debug("a receiver was registrated: {}", receiver.getClass().getCanonicalName());
exceptionReceiver.add(receiver);
}
}