Search in sources :

Example 1 with Transactional

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();
}
Also used : Event(io.openliberty.guides.event.models.Event) POST(jakarta.ws.rs.POST) Consumes(jakarta.ws.rs.Consumes) Transactional(jakarta.transaction.Transactional)

Example 2 with Transactional

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();
}
Also used : Event(io.openliberty.guides.event.models.Event) JsonObjectBuilder(jakarta.json.JsonObjectBuilder) Path(jakarta.ws.rs.Path) Produces(jakarta.ws.rs.Produces) GET(jakarta.ws.rs.GET) Transactional(jakarta.transaction.Transactional)

Example 3 with Transactional

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();
}
Also used : Event(io.openliberty.guides.event.models.Event) JsonArrayBuilder(jakarta.json.JsonArrayBuilder) JsonObjectBuilder(jakarta.json.JsonObjectBuilder) Produces(jakarta.ws.rs.Produces) GET(jakarta.ws.rs.GET) Transactional(jakarta.transaction.Transactional)

Example 4 with Transactional

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);
    }
}
Also used : EntityTransaction(jakarta.persistence.EntityTransaction) EntityManager(jakarta.persistence.EntityManager) TxType(jakarta.transaction.Transactional.TxType) InvalidTransactionException(jakarta.transaction.InvalidTransactionException) InvalidTransactionException(jakarta.transaction.InvalidTransactionException) Transactional(jakarta.transaction.Transactional)

Example 5 with Transactional

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");
}
Also used : MobileNumber(com.stardata.starshop2.sharedcontext.domain.MobileNumber) SessionUser(com.stardata.starshop2.sharedcontext.pl.SessionUser) User(com.stardata.starshop2.authcontext.domain.user.User) WxAuthInfo(com.stardata.starshop2.authcontext.domain.user.WxAuthInfo) LongIdentity(com.stardata.starshop2.sharedcontext.domain.LongIdentity) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Rollback(org.springframework.test.annotation.Rollback) Transactional(jakarta.transaction.Transactional)

Aggregations

Transactional (jakarta.transaction.Transactional)13 Event (io.openliberty.guides.event.models.Event)5 User (com.stardata.starshop2.authcontext.domain.user.User)4 SessionUser (com.stardata.starshop2.sharedcontext.pl.SessionUser)4 Test (org.junit.jupiter.api.Test)4 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)4 Rollback (org.springframework.test.annotation.Rollback)4 WxAuthInfo (com.stardata.starshop2.authcontext.domain.user.WxAuthInfo)3 LongIdentity (com.stardata.starshop2.sharedcontext.domain.LongIdentity)3 MobileNumber (com.stardata.starshop2.sharedcontext.domain.MobileNumber)3 Consumes (jakarta.ws.rs.Consumes)3 Path (jakarta.ws.rs.Path)3 ApplicationValidationException (com.stardata.starshop2.sharedcontext.exception.ApplicationValidationException)2 JsonObjectBuilder (jakarta.json.JsonObjectBuilder)2 GET (jakarta.ws.rs.GET)2 POST (jakarta.ws.rs.POST)2 Produces (jakarta.ws.rs.Produces)2 Method (java.lang.reflect.Method)2 TransactionPolicy (org.apache.openejb.core.transaction.TransactionPolicy)2 MobileNumberResponse (com.stardata.starshop2.authcontext.pl.MobileNumberResponse)1