Skip to content

5 TestData

arne edited this page May 15, 2020 · 1 revision

Now we can create some users and contacts. For this we change the App.java file we created during setup. First we must import the following classes:

import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.jpasecurity.contacts.model.Contact;
import org.jpasecurity.contacts.model.User;
import org.jpasecurity.security.authentication.StaticSecurityContext;

To create the users and contacts we must create an EntityManagerFactory, an EntityManager, start a Transaction and persist the users. As recommended by the JPA Specification, we use one EntityManagerFactory per application. So we create it directly within the main:

public static void main(String[] args) {
  EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("contacts");
}

We use a separate method to create the users:

public static void createUsers(EntityManagerFactory entityManagerFactory) {
  EntityManager entityManager;

  entityManager = entityManagerFactory.createEntityManager();
  entityManager.getTransaction().begin();
  entityManager.persist(new User("John"));
  entityManager.persist(new User("Mary"));
  entityManager.getTransaction().commit();
  entityManager.close();
}

Ok, let's retrieve the users from the database to see whether they were really persisted:

public static void displayUserCount(EntityManagerFactory entityManagerFactory) {
  EntityManager entityManager;

  entityManager = entityManagerFactory.createEntityManager();
  entityManager.getTransaction().begin();
  List<User> users = entityManager.createQuery("SELECT user FROM User user").getResultList();
  System.out.println("users.size = " + users.size());
  entityManager.getTransaction().commit();
  entityManager.close();
}  

Let's change the main to call our methods and see the output:

public static void main(String[] args) {
  EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("contacts");
  createUsers(entityManagerFactory);
  displayUserCount(entityManagerFactory);
  entityManagerFactory.close();
}

Again on the command-line issue the following command from within the root-directory of our application:

mvn package

Now again change into the target folder and execute our application to see the output:

java -jar jpasecurity-simple-sample-1.0-SNAPSHOT.jar

As we can see from the output, there are really two users in the database. Now we can create contacts for these users:

public static void createContacts(EntityManagerFactory entityManagerFactory) {
  EntityManager entityManager;

  entityManager = entityManagerFactory.createEntityManager();
  entityManager.getTransaction().begin();
  User john = (User)entityManager.createQuery("SELECT user FROM User user WHERE user.name = 'John'").getSingleResult();
  User mary = (User)entityManager.createQuery("SELECT user FROM User user WHERE user.name = 'Mary'").getSingleResult();
  entityManager.persist(new Contact(john, "peter@jpasecurity.sf.net"));
  entityManager.persist(new Contact(john, "0 12 34 - 56 789"));
  entityManager.persist(new Contact(mary, "paul@jpasecurity.sf.net"));
  entityManager.persist(new Contact(mary, "12 34 56 78 90"));
  entityManager.getTransaction().commit();
  entityManager.close();
}

Let's see if all four contacts are there:

public static void displayContactCount(EntityManagerFactory entityManagerFactory) {
  EntityManager entityManager;

  entityManager = entityManagerFactory.createEntityManager();
  entityManager.getTransaction().begin();
  List<Contact> contacts = entityManager.createQuery("SELECT contact FROM Contact contact").getResultList();
  System.out.println("contacts.size = " + contacts.size());
  entityManager.getTransaction().commit();
  entityManager.close();
}

Again we add the method to our main and see the output:

public static void main(String[] args) {
  EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("contacts");
  createUsers(entityManagerFactory);
  displayUserCount(entityManagerFactory);
  createContacts(entityManagerFactory);
  displayContactCount(entityManagerFactory);
  entityManagerFactory.close();
}

As we can see from the output: All contacts are persisted. Now it's time for some security.

Clone this wiki locally