01: // RespourceInfoFactory.java
02: // -------------------------------------
03: // part of YACY
04: // (C) by Michael Peter Christen; mc@anomic.de
05: // first published on http://www.anomic.de
06: // Frankfurt, Germany, 2006
07: //
08: // This file ist contributed by Martin Thelian
09: //
10: // $LastChangedDate: 2006-02-20 23:57:42 +0100 (Mo, 20 Feb 2006) $
11: // $LastChangedRevision: 1715 $
12: // $LastChangedBy: theli $
13: //
14: // This program is free software; you can redistribute it and/or modify
15: // it under the terms of the GNU General Public License as published by
16: // the Free Software Foundation; either version 2 of the License, or
17: // (at your option) any later version.
18: //
19: // This program is distributed in the hope that it will be useful,
20: // but WITHOUT ANY WARRANTY; without even the implied warranty of
21: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22: // GNU General Public License for more details.
23: //
24: // You should have received a copy of the GNU General Public License
25: // along with this program; if not, write to the Free Software
26: // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27: //
28: // Using this software in any meaning (reading, learning, copying, compiling,
29: // running) means that you agree that the Author(s) is (are) not responsible
30: // for cost, loss of data or any harm that may be caused directly or indirectly
31: // by usage of this softare or this documentation. The usage of this software
32: // is on your own risk. The installation and usage (starting/running) of this
33: // software may allow other people or application to access your computer and
34: // any attached devices and is highly dependent on the configuration of the
35: // software which must be done by the user of the software; the author(s) is
36: // (are) also not responsible for proper configuration and usage of the
37: // software, even if provoked by documentation provided together with
38: // the software.
39: //
40: // Any changes to this file according to the GPL as documented in the file
41: // gpl.txt aside this file in the shipment you received can be done to the
42: // lines that follows this copyright notice here, but changes must not be
43: // done inside the copyright notive above. A re-distribution must contain
44: // the intact and unchanged copyright notice.
45: // Contributions and changes to the program code must be marked as such.
46:
47: package de.anomic.plasma.cache;
48:
49: import java.lang.reflect.Constructor;
50: import java.util.Map;
51:
52: import de.anomic.yacy.yacyURL;
53:
54: public class ResourceInfoFactory {
55: public IResourceInfo buildResourceInfoObj(yacyURL resourceURL,
56: Map<String, String> resourceMetadata)
57: throws UnsupportedProtocolException, IllegalAccessException {
58:
59: String protocString = resourceURL.getProtocol();
60:
61: // TODO: remove this
62: if (protocString.equals("https"))
63: protocString = "http";
64:
65: // the full qualified class name
66: final String className = this .getClass().getPackage().getName()
67: + "." + protocString + ".ResourceInfo";
68:
69: try {
70: // loading class by name
71: final Class<?> moduleClass = Class.forName(className);
72:
73: // getting the constructor
74: final Constructor<?> classConstructor = moduleClass
75: .getConstructor(new Class[] { yacyURL.class,
76: Map.class });
77:
78: // instantiating class
79: final IResourceInfo infoObject = (IResourceInfo) classConstructor
80: .newInstance(new Object[] { resourceURL,
81: resourceMetadata });
82:
83: // return the newly created object
84: return infoObject;
85: } catch (Exception e) {
86: if (e instanceof RuntimeException) {
87: throw (RuntimeException) e;
88: } else if (e instanceof ClassNotFoundException) {
89: throw new UnsupportedProtocolException(protocString, e);
90: } else if (e instanceof IllegalAccessException) {
91: throw (IllegalAccessException) e;
92: } else {
93: e.printStackTrace();
94: return null;
95: }
96: }
97: }
98: }
|