Not able to persist Actor

I want to persist events in Akka only when there is a failure in the actor. I am trying the following code to achieve persistence.

package persistence

import akka.actor._
import akka.persistence._

case class Cmd(data: String)
case class Evt(data: String)

case class ExampleState(events: List[String] = Nil) {
  def updated(evt: Evt): ExampleState = copy(evt.data :: events)
  def size: Int = events.length
  override def toString: String = events.reverse.toString
}

class ExamplePersistentActor extends PersistentActor {
    var list = new java.util.ArrayList[String]
  override def postStop (): Unit = {
    println("inside postStop")
    println(list.size())
    import scala.collection.JavaConversions._
    for( data <- list) {
      persist(Evt(s"${data}-${numEvents}")) { event ⇒
        println("persisting")
        updateState(event)
        context.system.eventStream.publish(event)
        if (lastSequenceNr % snapShotInterval == 0 && lastSequenceNr != 0)
          saveSnapshot(state)
      }
    }
  }
  override def persistenceId = "sample-id-1"

  var state = ExampleState()

  def updateState(event: Evt): Unit =
    state = state.updated(event)

  def numEvents =
    state.size

  val receiveRecover: Receive = {
    case evt: Evt                                 ⇒ updateState(evt)
    case SnapshotOffer(_, snapshot: ExampleState) ⇒ state = snapshot
  }

  val snapShotInterval = 1000
  val receiveCommand: Receive = {
    case 'test =>
      println("test")
    case Cmd(data) ⇒
      println(data)
      list.add(data)
    case "print" ⇒ println(state)
  }
}
//#persistent-actor-example

object PersistentActorExample extends App {

  val system = ActorSystem("example")
  val persistentActor = system.actorOf(Props[ExamplePersistentActor], "persistentActor-4-scala")
  persistentActor ! 'test
  persistentActor ! Cmd("foo")
  persistentActor ! Cmd("baz")
  persistentActor ! Cmd("bar")
  persistentActor ! Cmd("buzz")
  persistentActor ! "print"
  Thread.sleep(10000)
  persistentActor ! PoisonPill
  system.terminate()
}

Can anyone help me in the above code? Is this code is the best approach to achieve what I want or Do I have to look for some other way?

One more approach I can think of is to add a shutdown hook but I don't know whether I will be able to use akka persistence in shutdown hook