01: /* ================================================================
02: * Cewolf : Chart enabling Web Objects Framework
03: * ================================================================
04: *
05: * Project Info: http://cewolf.sourceforge.net
06: * Project Lead: Guido Laures (guido@laures.de);
07: *
08: * (C) Copyright 2002, by Guido Laures
09: *
10: * This library is free software; you can redistribute it and/or modify it under the terms
11: * of the GNU Lesser General Public License as published by the Free Software Foundation;
12: * either version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16: * See the GNU Lesser General Public License for more details.
17: *
18: * You should have received a copy of the GNU Lesser General Public License along with this
19: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20: * Boston, MA 02111-1307, USA.
21: */
22:
23: package de.laures.cewolf.taglib.util;
24:
25: import java.io.IOException;
26: import java.io.Serializable;
27: import java.rmi.MarshalledObject;
28:
29: import org.apache.commons.logging.Log;
30: import org.apache.commons.logging.LogFactory;
31:
32: /**
33: * @author Guido Laures
34: */
35: public abstract class KeyGenerator {
36:
37: private static final Log log = LogFactory
38: .getLog(KeyGenerator.class);
39:
40: private static class NoKeyException extends RuntimeException {
41: public NoKeyException(String msg) {
42: super (msg);
43: }
44: }
45:
46: public static int generateKey(Serializable obj) {
47: if (obj == null) {
48: NoKeyException ex = new NoKeyException(
49: "assertion failed: can not generate key for null,");
50: throw ex;
51: }
52: try {
53: MarshalledObject mo = new MarshalledObject(obj);
54: return mo.hashCode();
55: } catch (IOException ioex) {
56: log
57: .error(
58: "IOException during key generation KeyGenerator.generateKey()",
59: ioex);
60: throw new NoKeyException(obj + " is not serializable.");
61: }
62: }
63: }
|