001 /*
002 * LAPIS lightweight structured text processing system
003 *
004 * Copyright (C) 1998-2002 Carnegie Mellon University,
005 * Copyright (C) 2003 Massachusetts Institute of Technology.
006 * All rights reserved.
007 *
008 * This library is free software; you can redistribute it
009 * and/or modify it under the terms of the GNU General
010 * Public License as published by the Free Software
011 * Foundation, version 2.
012 *
013 * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/
014 */
015
016
017 package lapisx.util;
018
019 import java.util.Hashtable;
020
021 /**
022 * Subclass of Hashtable that supports merging the existing object
023 * stored in the hashtable with a new object.
024 */
025 public abstract class MergingHashtable extends Hashtable {
026
027 public Object add (Object key, Object value) {
028 Object curr = get (key);
029 if (curr != null)
030 value = merge (curr, value);
031 return put (key, value);
032 }
033
034 protected abstract Object merge (Object current, Object addition);
035
036 }