source: main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/CollectionClassLoader.java@ 26264

Last change on this file since 26264 was 26264, checked in by kjdon, 12 years ago

changed findResource to getResource to make it a child:parent classloader rather than a parent first classloader

  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1/*
2 * CollectionClassLoader.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 collection resources directory
28 */
29public class CollectionClassLoader extends ClassLoader
30{
31
32 String base_dir = null;
33
34 public CollectionClassLoader(ClassLoader parent, String site_home, String collection_name)
35 {
36 super(parent);
37 // 'resources directory' in the collection
38 this.base_dir = GSFile.collectionResourceDir(site_home, collection_name);
39 }
40
41 // Resource Bundle loading with a class loader will call getResource().
42 // THe Java implementation of getResource tries using the parent class
43 // loader to find the resource (or the system class loader if no parent).
44 // If the resource not found, then it calls the local findResource method.
45 // Ie parent:child ordering.
46 // Because we want local files to override default ones, we need
47 // child:parent ordering, so change getResource to look locally first.
48 //public URL findResource(String name)
49 public URL getResource(String name)
50 {
51 File resource_path = new File(this.base_dir, name);
52 try
53 {
54 if (resource_path.exists())
55 {
56 return resource_path.toURI().toURL();
57 }
58 }
59 catch (Exception e)
60 {
61 }
62
63 return super.getResource(name);
64 }
65}
Note: See TracBrowser for help on using the repository browser.