use of jakarta.transaction.Transactional in project guide-jpa-intro by OpenLiberty.
the class EventResource method addNewEvent.
/**
* This method creates a new event from the submitted data (name, time and
* location) by the user.
*/
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Transactional
public Response addNewEvent(@FormParam("name") String name, @FormParam("time") String time, @FormParam("location") String location) {
Event newEvent = new Event(name, location, time);
if (!eventDAO.findEvent(name, location, time).isEmpty()) {
return Response.status(Response.Status.BAD_REQUEST).entity("Event already exists").build();
}
eventDAO.createEvent(newEvent);
return Response.status(Response.Status.NO_CONTENT).build();
}
use of jakarta.transaction.Transactional in project guide-jpa-intro by OpenLiberty.
the class EventResource method getEvent.
/**
* This method returns a specific existing/stored event in Json format
*/
@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
@Transactional
public JsonObject getEvent(@PathParam("id") int eventId) {
JsonObjectBuilder builder = Json.createObjectBuilder();
Event event = eventDAO.readEvent(eventId);
if (event != null) {
builder.add("name", event.getName()).add("time", event.getTime()).add("location", event.getLocation()).add("id", event.getId());
}
return builder.build();
}
use of jakarta.transaction.Transactional in project guide-jpa-intro by OpenLiberty.
the class EventResource method getEvents.
/**
* This method returns the existing/stored events in Json format
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
@Transactional
public JsonArray getEvents() {
JsonObjectBuilder builder = Json.createObjectBuilder();
JsonArrayBuilder finalArray = Json.createArrayBuilder();
for (Event event : eventDAO.readAllEvents()) {
builder.add("name", event.getName()).add("time", event.getTime()).add("location", event.getLocation()).add("id", event.getId());
finalArray.add(builder.build());
}
return finalArray.build();
}
use of jakarta.transaction.Transactional in project appslandia-common by haducloc.
the class TestTxInterceptor method doTran.
public Object doTran(InvocationContext context) throws Exception {
// @Transactional
Transactional tx = context.getMethod().getAnnotation(Transactional.class);
if (tx == null) {
tx = context.getTarget().getClass().getAnnotation(Transactional.class);
}
TxType type = tx.value();
// transaction.
if (type == TxType.NEVER) {
EntityManager curEm = getEm();
if ((curEm != null) && curEm.getTransaction().isActive()) {
throw new InvalidTransactionException("TxType.NEVER - Transaction active found.");
}
// No TX
setEm(null);
try {
return context.proceed();
} catch (Exception ex) {
throw ex;
} finally {
setEm(curEm);
}
}
// otherwise.
if (type == TxType.MANDATORY) {
EntityManager curEm = getEm();
if ((curEm == null) || !curEm.getTransaction().isActive()) {
throw new InvalidTransactionException("TxType.MANDATORY - No transaction active found.");
}
// Join TX
return context.proceed();
}
// if a transaction was started, joins it; otherwise works with no transaction.
if (type == TxType.SUPPORTS) {
EntityManager curEm = getEm();
if ((curEm != null) && curEm.getTransaction().isActive()) {
// Join TX
return context.proceed();
} else {
// No TX
setEm(null);
try {
return context.proceed();
} catch (Exception ex) {
throw ex;
} finally {
setEm(curEm);
}
}
}
// the boundary of the method; otherwise works with no transaction.
if (type == TxType.NOT_SUPPORTED) {
EntityManager curEm = getEm();
setEm(null);
try {
return context.proceed();
} catch (Exception ex) {
throw ex;
} finally {
setEm(curEm);
}
}
// suspends it and starts a new one for the boundary of that method.
if (type == TxType.REQUIRES_NEW) {
EntityManager curEm = getEm();
EntityManager newEm = storeNewEm();
EntityTransaction et = newEm.getTransaction();
et.begin();
try {
Object obj = context.proceed();
et.commit();
return obj;
} catch (Exception ex) {
if (willRollbackOn(ex, tx.rollbackOn(), tx.dontRollbackOn())) {
et.rollback();
}
throw ex;
} finally {
newEm.close();
setEm(curEm);
}
}
// TxType.REQUIRED
// (default): starts a transaction if none was started, stays with the existing
// one otherwise.
EntityManager curEm = getEm();
boolean startNew = (curEm == null);
if (startNew) {
curEm = storeNewEm();
}
EntityTransaction et = curEm.getTransaction();
boolean inTrans = et.isActive();
if (!inTrans)
et.begin();
try {
Object obj = context.proceed();
if (!inTrans)
et.commit();
return obj;
} catch (Exception ex) {
if (!inTrans) {
if (willRollbackOn(ex, tx.rollbackOn(), tx.dontRollbackOn())) {
et.rollback();
}
}
throw ex;
} finally {
if (startNew)
setEm(null);
}
}
use of jakarta.transaction.Transactional in project starshop by beautautumn.
the class StarshopAuthDecryptingTests method should_get_mobile_phone_correctly_given_exists_userid_and_correct_encrypted_data_iv_by_domain_service.
// 1.1. 正常的已有用户、加密数据encryptedData、iv,成功解密手机号,并更新用户对象手机号
@Test
@Transactional
@Rollback(true)
void should_get_mobile_phone_correctly_given_exists_userid_and_correct_encrypted_data_iv_by_domain_service() {
// given: 正常的已有用户、加密数据encryptedData、iv
String code = "011NXJ000zQ8VN1iJZ000DWjjS2NXJ0e";
String rawData = "{\"nickName\":\"深清秋\",\"gender\":0,\"language\":\"zh_CN\",\"city\":\"\",\"province\":\"\",\"country\":\"\",\"avatarUrl\":\"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKq2CRmib1mpu4hOFYtcIHgAmS7DicCEfYkUHoPmPQn74BXH5GerjoMOxIqib7iafNNBw2ZAicBj6gZGUQ/132\"}";
String signature = "3901b7322c7920ef4a5077eeba54b0d633585eef";
WxAuthInfo wxAuthInfo = new WxAuthInfo(rawData, signature);
User requestUser = User.of("深清秋", 1).avatarUrl("https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKq2CRmib1mpu4hOFYtcIHgAmS7DicCEfYkUHoPmPQn74BXH5GerjoMOxIqib7iafNNBw2ZAicBj6gZGUQ/132").country("中国").province("江苏").city("南京").language("zh_CN");
User user = loginWithTokenService.loginWithToken(code, wxAuthInfo, requestUser);
userRepository.add(user);
entityManager.flush();
LongIdentity userId = user.getId();
String encryptedData = "NkSHcnyy8jJZwvsTBpb8Kw7jKIdYz1UnVqJ9Gf2NGFAn3DEeObh7W2Vh5hlgvs5zvtfNsV/IW+oHxEtzN4DY1E/tsGWnhiZYN+pYQun/8gNPrUNsjlR8saZIYoTGNcKpchNp+QEPzP/JFtGqIH+Etpk11RVRWepNJdYNzG3aNLUVmYQRqgCom7kYRrbM7g7GDu/jnqzvMn65ps48GawfQA==";
String iv = "S2r8F/Gr0aUEs7BoerD5ZQ==";
// when: 解密手机号
MobileNumber mobileNumber = mobileNumberDecryptingService.decryptWxMobileNumber(userId, encryptedData, iv);
userRepository.update(user);
entityManager.flush();
User loadedUser = userRepository.instanceOf(userId);
// then: 判定解密手机号是否正确
assertNotNull(mobileNumber);
assertEquals(mobileNumber.value(), "18652012976");
assertEquals(loadedUser.getMobileNumber().value(), "18652012976");
}
Aggregations