KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > petals > classloader > locator > LocatorAbstract


1 /**
2  * JOnAS: Java(TM) Open Application Server
3  * Copyright (C) 1999 Bull S.A.
4  * Contact: jonas-team@objectweb.org
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19  * USA
20  *
21  * Initial developer(s): Guillaume SAUTHIER
22  * --------------------------------------------------------------------------
23  * $Id: Locator.java,v 1.3 2004/04/19 13:49:09 sauthieg Exp $
24  * --------------------------------------------------------------------------
25  */

26
27 package org.objectweb.petals.classloader.locator;
28
29 import java.io.IOException JavaDoc;
30 import java.net.URL JavaDoc;
31 import java.util.List JavaDoc;
32
33 /**
34  * A <code>Locator</code> is used to hide System specific when looking for a
35  * file.
36  *
37  * @author Guillaume Sauthier
38  */

39 public abstract class LocatorAbstract {
40
41     /**
42      * Returns true when file was found.
43      *
44      * @param path
45      * the path to the file to look up
46      *
47      * @return true when file was found, otherwise false.
48      */

49     public abstract boolean hasFile(String JavaDoc path);
50
51     /**
52      * Returns true when directory was found.
53      *
54      * @param path
55      * the path to the directory to look up
56      *
57      * @return true when directory was found, otherwise false.
58      */

59     public abstract boolean hasDirectory(String JavaDoc path);
60
61     /**
62      * Returns a list of filename stored in path.
63      *
64      * @param path
65      * the path to the directory where looking for files
66      *
67      * @return a list of filename stored in path.
68      */

69     public abstract List JavaDoc listContent(String JavaDoc path);
70
71     /**
72      * Return a new Locator in function of the URL type. an URL pointing to a
73      * jar file will return a <code>JarFileLocator</code> and an URL pointing
74      * to a directory file will return a <code>DirFileLocator</code>.
75      *
76      * @param url
77      * the base URL
78      *
79      * @return a new Locator in function of the URL type.
80      *
81      * @throws IOException
82      * when cannot find a specialized locator for the given URL.
83      */

84     public static LocatorAbstract getLocator(URL JavaDoc url) throws IOException JavaDoc {
85         String JavaDoc path = url.getPath();
86         if (path.matches(".*\\..ar")) {
87             // jar detected if path ends with .?ar (*.jar, *.war, *.ear)
88
return new JarFileLocator(url);
89         } else if (path.endsWith("/")) {
90             // directory detected if url ends with a separator /
91
return new DirLocator(url);
92         } else {
93             String JavaDoc err = "Unsupported URL '" + url + "' support "
94                     + "only jar archive and directory";
95             throw new IOException JavaDoc(err);
96         }
97     }
98 }
99
Popular Tags