Example usage for org.hibernate.envers AuditReader getRevisions

List of usage examples for org.hibernate.envers AuditReader getRevisions

Introduction

In this page you can find the example usage for org.hibernate.envers AuditReader getRevisions.

Prototype

List<Number> getRevisions(Class<?> cls, Object primaryKey)
        throws IllegalArgumentException, NotAuditedException, IllegalStateException;

Source Link

Document

Get a list of revision numbers, at which an entity was modified.

Usage

From source file:org.springframework.data.envers.repository.support.EnversRevisionRepositoryImpl.java

License:Apache License

@SuppressWarnings("unchecked")
public Revisions<N, T> findRevisions(ID id) {

    Class<T> type = entityInformation.getJavaType();
    AuditReader reader = AuditReaderFactory.get(entityManager);
    List<? extends Number> revisionNumbers = reader.getRevisions(type, id);
    return revisionNumbers.isEmpty() ? new Revisions<N, T>(Collections.EMPTY_LIST)
            : getEntitiesForRevisions((List<N>) revisionNumbers, id, reader);
}

From source file:org.tomitribe.tribestream.registryng.resources.EndpointHistoryResourceTest.java

License:Apache License

@Test
public void loadRevisionHasPayload() {
    // Given: A random application
    final EndpointSearchResult searchResult = registry.withRetries(() -> {
        List<EndpointSearchResult> searchResults = getSearchPage().getResults().stream()
                .map(SearchResult::getEndpoints).flatMap(List::stream).collect(toList());
        final EndpointSearchResult result = searchResults.get(random.nextInt(searchResults.size()));
        assertNotNull("endpoint exists", em.find(Endpoint.class, result.getEndpointId()));
        return result;
    });//from  w  ww. j a  va  2s. com

    final String applicationId = searchResult.getApplicationId();
    final String endpointId = searchResult.getEndpointId();

    final AuditReader auditReader = AuditReaderFactory.get(em);
    final Number revision = auditReader.getRevisions(Endpoint.class, endpointId).iterator().next();

    final String json = registry.target()
            .path("api/history/application/{applicationId}/endpoint/{endpointId}/{revision}")
            .resolveTemplate("applicationId", applicationId).resolveTemplate("endpointId", endpointId)
            .resolveTemplate("revision", revision.intValue()).request(MediaType.APPLICATION_JSON_TYPE)
            .get(EndpointWrapper.class).getJson();

    assertNotNull(json);
    assertFalse(json.trim().isEmpty());
    try { // valid it is json
        new ObjectMapper().readTree(json);
    } catch (final IOException e) {
        fail(e.getMessage());
    }
}

From source file:pl.softwaremill.enversdemo.working.WorkingDemo.java

License:Open Source License

public void doRun() {
    em.getTransaction().begin();//from   www  . java  2s . c o m

    WorkingAddress a1 = new WorkingAddress("street1");
    em.persist(a1);

    WorkingAddress a2 = new WorkingAddress("street2");
    em.persist(a2);

    WorkingPerson p1 = new WorkingPerson("john", "doe", 10);
    p1.setAddress(a1);
    em.persist(p1);

    em.getTransaction().commit();

    // ---

    em.getTransaction().begin();

    p1 = em.find(WorkingPerson.class, p1.getId());
    p1.setAge(11);

    WorkingPerson p2 = new WorkingPerson("mary", "kowalski", 99);
    p2.setAddress(a1);
    em.persist(p2);

    em.getTransaction().commit();

    // --

    em.getTransaction().begin();

    p1 = em.find(WorkingPerson.class, p1.getId());
    p1.setAddress(a2);
    p1.setName("peter");

    p2 = em.find(WorkingPerson.class, p2.getId());
    p2.setAge(35);

    em.getTransaction().commit();

    // --

    AuditReader ar = AuditReaderFactory.get(em);

    WorkingPerson p1_rev1 = ar.find(WorkingPerson.class, p1.getId(), 1);
    assertEquals(p1_rev1.getAge(), 10);

    WorkingPerson p2_rev3 = ar.find(WorkingPerson.class, p2.getId(), 3);
    assertEquals(p2_rev3.getAge(), 35);

    // --

    assertEquals(ar.getRevisions(WorkingPerson.class, p2.getId()), Arrays.asList(2, 3));

    // --

    assertEquals(ar.find(WorkingAddress.class, a1.getId(), 2).getPersons().size(), 2);
}