/* * $Id$ * * Copyright (c) 2006 by Rodney Kinney * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.tools; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; public class JarArchive extends DataArchive { protected String prefix; public JarArchive() { this(null); } public JarArchive(String prefix) { super(); this.prefix = prefix; } @Override public URL getURL(String fileName) throws IOException { final URL url = getClass().getResource(getAbsolutePath(fileName)); if (url != null) return url; for (DataArchive ext : extensions) { try { return ext.getURL(fileName); } catch (FileNotFoundException e) { // not found in this extension, try the next } } throw new FileNotFoundException( "\'" + fileName + "\' not found in " + getName()); } @Override public InputStream getInputStream(String fileName) throws IOException { final InputStream in = getClass().getResourceAsStream(getAbsolutePath(fileName)); if (in != null) return in; for (DataArchive ext : extensions) { try { return ext.getInputStream(fileName); } catch (FileNotFoundException e) { // not found in this extension, try the next } } throw new FileNotFoundException( "\'" + fileName + "\' not found in " + getName()); } protected String getAbsolutePath(String file) { return (prefix != null ? "/" + prefix : "" ) + "/" + file; } @Override public String getName() { return prefix != null ? prefix : super.getName(); } /** @deprecated Use {@link #getInputStream(String)} instead. */ @Deprecated @Override public InputStream getFileStream(String fileName) throws IOException { return getInputStream(fileName); } }