TSK-1038: Removed java precondition check and use db exception instead
This commit is contained in:
parent
6e1d6cf20f
commit
7cce420b76
|
|
@ -7,6 +7,7 @@ import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import org.apache.ibatis.exceptions.PersistenceException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
@ -200,16 +201,22 @@ public class WorkbasketServiceImpl implements WorkbasketService {
|
||||||
"WorkbasketAccessItem %s refers to a not existing workbasket",
|
"WorkbasketAccessItem %s refers to a not existing workbasket",
|
||||||
workbasketAccessItem));
|
workbasketAccessItem));
|
||||||
}
|
}
|
||||||
boolean accessIdAlreadyExists =
|
try {
|
||||||
getWorkbasketAccessItems(workbasketAccessItem.getWorkbasketId()).stream()
|
workbasketAccessMapper.insert(accessItem);
|
||||||
.map(WorkbasketAccessItem::getAccessId)
|
LOGGER.debug(
|
||||||
.anyMatch(i -> i.equals(workbasketAccessItem.getAccessId()));
|
"Method createWorkbasketAccessItem() created workbaskteAccessItem {}", accessItem);
|
||||||
if (accessIdAlreadyExists) {
|
} catch (PersistenceException e) {
|
||||||
throw new WorkbasketAccessItemAlreadyExistException(accessItem);
|
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;
|
return accessItem;
|
||||||
} finally {
|
} finally {
|
||||||
taskanaEngine.returnConnection();
|
taskanaEngine.returnConnection();
|
||||||
|
|
|
||||||
|
|
@ -234,10 +234,7 @@ class CreateWorkbasketAccTest extends AbstractAccTest {
|
||||||
userName = "user_1_2",
|
userName = "user_1_2",
|
||||||
groupNames = {"businessadmin"})
|
groupNames = {"businessadmin"})
|
||||||
@Test
|
@Test
|
||||||
void testCreateDuplicateWorkbasketAccessListFails()
|
void testCreateDuplicateWorkbasketAccessListFails() throws Exception {
|
||||||
throws NotAuthorizedException, InvalidArgumentException, WorkbasketNotFoundException,
|
|
||||||
InvalidWorkbasketException, WorkbasketAlreadyExistException, DomainNotFoundException,
|
|
||||||
WorkbasketAccessItemAlreadyExistException {
|
|
||||||
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
|
||||||
final int before = workbasketService.createWorkbasketQuery().domainIn("DOMAIN_A").list().size();
|
final int before = workbasketService.createWorkbasketQuery().domainIn("DOMAIN_A").list().size();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue