KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > nutch > io > WritableName


1 /* Copyright (c) 2003 The Nutch Organization. All rights reserved. */
2 /* Use subject to the conditions in http://www.nutch.org/LICENSE.txt. */
3
4 package net.nutch.io;
5
6 import java.util.HashMap JavaDoc;
7 import java.io.IOException JavaDoc;
8
9 /** Utility to permit renaming of Writable implementation classes without
10  * invalidiating files that contain their class name.
11  * @author Doug Cutting
12  */

13 public class WritableName {
14   private static HashMap JavaDoc NAME_TO_CLASS = new HashMap JavaDoc();
15   private static HashMap JavaDoc CLASS_TO_NAME = new HashMap JavaDoc();
16
17   static { // define important types
18
WritableName.setName(NullWritable.class, "null");
19     WritableName.setName(LongWritable.class, "long");
20     WritableName.setName(UTF8.class, "UTF8");
21     WritableName.setName(MD5Hash.class, "MD5Hash");
22     WritableName.setName(net.nutch.db.Page.class, "Page");
23     WritableName.setName(net.nutch.db.Link.class, "Link");
24     WritableName.setName
25       (net.nutch.pagedb.FetchListEntry.class, "FetchListEntry");
26     WritableName.setName
27       (net.nutch.fetcher.FetcherOutput.class, "FetcherOutput");
28     WritableName.setName(net.nutch.protocol.Content.class, "Content");
29     WritableName.setName(net.nutch.parse.ParseText.class, "ParseText");
30     WritableName.setName(net.nutch.parse.ParseData.class, "ParseData");
31   }
32
33   private WritableName() {} // no public ctor
34

35   /** Set the name that a class should be known as to something other than the
36    * class name. */

37   public static synchronized void setName(Class JavaDoc writableClass, String JavaDoc name) {
38     CLASS_TO_NAME.put(writableClass, name);
39     NAME_TO_CLASS.put(name, writableClass);
40   }
41
42   /** Add an alternate name for a class. */
43   public static synchronized void addName(Class JavaDoc writableClass, String JavaDoc name) {
44     NAME_TO_CLASS.put(name, writableClass);
45   }
46
47   /** Return the name for a class. Default is {@link Class#getName()}. */
48   public static synchronized String JavaDoc getName(Class JavaDoc writableClass) {
49     String JavaDoc name = (String JavaDoc)CLASS_TO_NAME.get(writableClass);
50     if (name != null)
51       return name;
52     return writableClass.getName();
53   }
54
55   /** Return the class for a name. Default is {@link Class#forName(String)}.*/
56   public static synchronized Class JavaDoc getClass(String JavaDoc name) throws IOException JavaDoc {
57     Class JavaDoc writableClass = (Class JavaDoc)NAME_TO_CLASS.get(name);
58     if (writableClass != null)
59       return writableClass;
60     try {
61       return Class.forName(name);
62     } catch (ClassNotFoundException JavaDoc e) {
63       throw new IOException JavaDoc(e.toString());
64     }
65   }
66
67 }
68
Popular Tags