Exemplo n.º 1
0
  /** Test multiple touch */
  public void testMultiple() throws CacheEvictionException {
    Object o1 = new Object();
    Object o2 = new Object();
    Object o3 = new Object();
    Object o4 = new Object();

    MRU m1 = new MRU(3);

    m1.put("1", o1);
    m1.put("2", o2);
    m1.put("3", o3);
    m1.put("3", o3);
    m1.put("3", o3);
    m1.put("3", o3);

    assertEquals(o1, m1.get("1"));
    assertEquals(o2, m1.get("2"));
    assertEquals(o3, m1.get("3"));

    m1.put("1", o3); // replace with o3
    m1.put("4", o4); // should evict 2

    assertEquals(o4, m1.get("4"));
    assertEquals(o3, m1.get("3"));
    assertEquals(o3, m1.get("1"));
    assertEquals(null, m1.get("2"));
  }
Exemplo n.º 2
0
 /** Note: Do NOT close these manually, they will be closed automatically. */
 private PreparedStatement prepare(String sql, List<? extends Object> data) throws SQLException {
   if (!connected) {
     LOGGER.warning("connection closed then used!");
     throw new SQLException("Connection closed then used!");
   }
   PreparedStatement ps;
   if (mru.containsKey(sql)) {
     LOGGER.finest("Getting prepared statement from mru");
     ps = mru.get(sql);
   } else {
     ps = con.prepareStatement(sql);
     LOGGER.finest("Storing prepared statement in mru");
     mru.put(sql, ps);
   }
   ps.clearParameters();
   if (data != null) {
     for (int i = 0; i < data.size(); i++) {
       Object obj = data.get(i);
       if (obj == null) {
         ps.setNull(i + 1, Types.NULL); // Not sure if this will work
       } else if (obj.getClass() == Integer.class) {
         ps.setInt(i + 1, (int) obj);
       } else if (obj.getClass() == Long.class) {
         ps.setLong(i + 1, (long) obj);
       } else if (obj.getClass() == Float.class) {
         ps.setFloat(i + 1, (float) obj);
       } else if (obj.getClass() == Double.class) {
         ps.setDouble(i + 1, (double) obj);
       } else if (obj.getClass() == String.class) {
         ps.setString(i + 1, (String) obj);
       } else if (obj.getClass() == Boolean.class) {
         ps.setBoolean(i + 1, (boolean) obj);
       } else {
         LOGGER.warning("Processing as object: " + obj.getClass());
         ps.setObject(i + 1, obj);
       }
     }
   }
   if (sql.startsWith("SELECT")) {
     // Avoid converting the statement to a string if not going to be logged anyway
     if (LOGGER.isLoggable(Level.FINER)) {
       LOGGER.finer("Statement: " + ps.toString());
     }
   } else {
     if (LOGGER.isLoggable(Level.FINE)) {
       LOGGER.fine("Statement: " + ps.toString());
     }
   }
   return ps;
 }
Exemplo n.º 3
0
  /** Test key replacement */
  public void testReplace() throws CacheEvictionException {
    Object o1 = new Object();
    Object o2 = new Object();
    Object o3 = new Object();
    Object o4 = new Object();

    MRU m1 = new MRU(3);

    m1.put("1", o1);
    m1.put("2", o2);
    m1.put("3", o3);
    m1.put("1", o4);

    assertEquals(o4, m1.get("1"));
    assertEquals(o2, m1.get("2"));
    assertEquals(o3, m1.get("3"));
  }