Crossfire JXClient, Trunk  R20561
JXCSkinClassSource.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff.
19  * Copyright (C) 2006-2011 Andreas Kirschbaum.
20  */
21 
22 package com.realtime.crossfire.jxclient.skin.source;
23 
25 import java.io.IOException;
26 import java.io.InputStream;
27 import org.jetbrains.annotations.NotNull;
28 
34 
38  @NotNull
39  private final String baseName;
40 
46  public JXCSkinClassSource(@NotNull final String baseName) throws JXCSkinException {
47  this.baseName = baseName;
48  checkAccess();
49  }
50 
54  @NotNull
55  @Override
56  public InputStream getInputStream(@NotNull final String name) throws IOException {
57  final InputStream inputStream = getClassLoader().getResourceAsStream(baseName+"/"+name);
58  if (inputStream == null) {
59  throw new IOException("resource '"+baseName+"/"+name+"' not found");
60  }
61  return inputStream;
62  }
63 
67  @NotNull
68  @Override
69  public String getURI(@NotNull final String name) {
70  return "resource:"+baseName+"/"+name;
71  }
72 
77  @NotNull
78  private ClassLoader getClassLoader() {
79  final ClassLoader classLoader = getClass().getClassLoader();
80  if (classLoader != null) {
81  return classLoader;
82  }
83 
84  final ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
85  if (systemClassLoader != null) {
86  return systemClassLoader;
87  }
88 
89  throw new InternalError("cannot find class loader");
90  }
91 
92 }
InputStream getInputStream(@NotNull final String name)
Returns an InputStream for a resource name.the resource name the input stream for the resource if the...
Abstract base class for JXCSkinSource implementations.
JXCSkinClassSource(@NotNull final String baseName)
Creates a new instance.
String getURI(@NotNull final String name)
Returns a description of the location of a resource name.the resource name the description of the res...
ClassLoader getClassLoader()
Returns the ClassLoader to use.
final String baseName
The base resource name to prepend to all resource names.
void checkAccess()
Checks that the skin exists and can be accessed.
Exception thrown if a skin related problem occurs.
A JXCSkinSource that loads via the class loader.