public void invalidateObject(Session session, javax.jms.Message msg)
      throws javax.jms.JMSException {
    String tableName = msg.getStringProperty("TABLE");
    if (tableName == null) {
      return;
    }
    Class baseClass = (Class) tableNameToClass.get(tableName);
    if (baseClass == null) {
      return;
    }
    Vector pkFieldNames = (Vector) tableNameToPkFieldNames.get(tableName);
    if (pkFieldNames == null) {
      return;
    }

    // create DatabaseRecord corresponding to the message
    DatabaseRecord row = new DatabaseRecord(pkFieldNames.size());
    for (int i = 0; i < pkFieldNames.size(); i++) {
      String fieldName = (String) pkFieldNames.elementAt(i);
      Object value = msg.getObjectProperty(fieldName);
      row.put(fieldName, value);
    }

    // invalidate in TopLink cache the object corresponding to the row and the baseClass
    session.getIdentityMapAccessor().invalidateObject(row, baseClass);
  }
 public void run() {
   try {
     counter = 0;
     while (!experienceError && counter < numOftries) {
       if (thread == 1) {
         session.getIdentityMapAccessor().initializeIdentityMap(BigBadObject.class);
         readObject = (BigBadObject) session.readObject(referenceObject);
       } else {
         readObject =
             (BigBadObject) session.getIdentityMapAccessor().getFromIdentityMap(referenceObject);
       }
       if ((readObject != null)
           && ((readObject.number02 == null)
               || (!readObject.number02.equals(referenceObject.number02)))) {
         this.experienceError = true;
       }
       counter++;
     }
   } catch (RuntimeException ex) {
     this.experienceError = true;
     this.exception = ex;
   }
 }