source: main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/CustomClassLoader.java@ 30829

Last change on this file since 30829 was 30829, checked in by kjdon, 8 years ago

renamed CollectionClassLoader to CustomClassLoader as now I want to use it also for a site. So now pass in the appropriate resources dir, instead of the site home and collection name

  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1/*
2 * CustomClassLoader.java
3 * Copyright (C) 2005 New Zealand Digital Library, http://www.nzdl.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19package org.greenstone.gsdl3.util;
20
21import java.net.URL;
22import java.util.Enumeration;
23import java.io.File;
24import java.io.IOException;
25
26/**
27 * Looks for classes/resources in the specified resources_dir directory
28 */
29public class CustomClassLoader extends ClassLoader
30{
31
32 String base_dir = null;
33
34 public CustomClassLoader(ClassLoader parent, String resources_dir)
35 {
36 super(parent);
37 this.base_dir = resources_dir;
38 }
39
40 // Resource Bundle loading with a class loader will call getResource().
41 // THe Java implementation of getResource tries using the parent class
42 // loader to find the resource (or the system class loader if no parent).
43 // If the resource not found, then it calls the local findResource method.
44 // Ie parent:child ordering.
45 // Because we want local files to override default ones, we need
46 // child:parent ordering, so change getResource to look locally first.
47 //public URL findResource(String name)
48 public URL getResource(String name)
49 {
50 File resource_path = new File(this.base_dir, name);
51 try
52 {
53 if (resource_path.exists())
54 {
55 return resource_path.toURI().toURL();
56 }
57 }
58 catch (Exception e)
59 {
60 }
61
62 return super.getResource(name);
63 }
64}
Note: See TracBrowser for help on using the repository browser.