KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > util > file > ArchiveBrowser


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.util.file;
23
24 import java.io.File JavaDoc;
25 import java.io.IOException JavaDoc;
26 import java.net.JarURLConnection JavaDoc;
27 import java.net.URI JavaDoc;
28 import java.net.URISyntaxException JavaDoc;
29 import java.net.URL JavaDoc;
30 import java.util.Iterator JavaDoc;
31
32 /**
33  * Comment
34  *
35  * @author <a HREF="mailto:bill@jboss.org">Bill Burke</a>
36  * @version $Revision: 2151 $
37  */

38 public abstract class ArchiveBrowser
39 {
40    public interface Filter
41    {
42       boolean accept(String JavaDoc filename);
43    }
44
45    public static Iterator JavaDoc getBrowser(URL JavaDoc url, Filter filter)
46    {
47       if (url.getProtocol().equals("file"))
48       {
49          File JavaDoc f = null;
50          try
51          {
52             f = new File JavaDoc(new URI JavaDoc(url.toString()));
53          }
54          catch (URISyntaxException JavaDoc e)
55          {
56             throw new RuntimeException JavaDoc("Not a valid URL: " + url, e);
57          }
58          if (f.isDirectory())
59          {
60             return new DirectoryArchiveBrowser(f, filter);
61          }
62          else
63          {
64             return new JarArchiveBrowser(f, filter);
65          }
66       }
67       else if (url.getProtocol().startsWith("jar"))
68       {
69          if (url.toString().endsWith("!/"))
70          {
71             try
72             {
73                return new JarArchiveBrowser((JarURLConnection JavaDoc) url.openConnection(), filter);
74             }
75             catch (IOException JavaDoc e)
76             {
77                throw new RuntimeException JavaDoc("Unable to browse url: " + url, e);
78             }
79          }
80          else
81          {
82             try
83             {
84                return new JarStreamBrowser(url.openStream(), filter);
85             }
86             catch (IOException JavaDoc e)
87             {
88                throw new RuntimeException JavaDoc("Unable to browse url: " + url, e);
89             }
90          }
91
92       }
93       else throw new RuntimeException JavaDoc("Archive browser cannot handle protocol: " + url);
94    }
95 }
96
Popular Tags