TSK-1038: Removed java precondition check and use db exception instead

This commit is contained in:
Mustapha Zorgati 2020-01-28 08:53:04 +01:00
parent 6e1d6cf20f
commit 7cce420b76
2 changed files with 17 additions and 13 deletions

View File

@ -7,6 +7,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.apache.ibatis.exceptions.PersistenceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -200,16 +201,22 @@ public class WorkbasketServiceImpl implements WorkbasketService {
"WorkbasketAccessItem %s refers to a not existing workbasket",
workbasketAccessItem));
}
boolean accessIdAlreadyExists =
getWorkbasketAccessItems(workbasketAccessItem.getWorkbasketId()).stream()
.map(WorkbasketAccessItem::getAccessId)
.anyMatch(i -> i.equals(workbasketAccessItem.getAccessId()));
if (accessIdAlreadyExists) {
throw new WorkbasketAccessItemAlreadyExistException(accessItem);
try {
workbasketAccessMapper.insert(accessItem);
LOGGER.debug(
"Method createWorkbasketAccessItem() created workbaskteAccessItem {}", accessItem);
} catch (PersistenceException e) {
List<String> accessItemExistsIdentifier =
Arrays.asList(
"SQLCODE=-803", // DB2
"uc_accessid_wbid", // POSTGRES
"UC_ACCESSID_WBID_INDEX_E" // H2
);
if (accessItemExistsIdentifier.stream().anyMatch(e.getMessage()::contains)) {
throw new WorkbasketAccessItemAlreadyExistException(accessItem);
}
throw e;
}
workbasketAccessMapper.insert(accessItem);
LOGGER.debug(
"Method createWorkbasketAccessItem() created workbaskteAccessItem {}", accessItem);
return accessItem;
} finally {
taskanaEngine.returnConnection();

View File

@ -234,10 +234,7 @@ class CreateWorkbasketAccTest extends AbstractAccTest {
userName = "user_1_2",
groupNames = {"businessadmin"})
@Test
void testCreateDuplicateWorkbasketAccessListFails()
throws NotAuthorizedException, InvalidArgumentException, WorkbasketNotFoundException,
InvalidWorkbasketException, WorkbasketAlreadyExistException, DomainNotFoundException,
WorkbasketAccessItemAlreadyExistException {
void testCreateDuplicateWorkbasketAccessListFails() throws Exception {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
final int before = workbasketService.createWorkbasketQuery().domainIn("DOMAIN_A").list().size();