de.kleopatra.persistence
Class ResourceManager

java.lang.Object
  extended byde.kleopatra.persistence.ResourceManager

public class ResourceManager
extends java.lang.Object

handles a) resources with fallback in look-up and b) dynamic classloading.

getResource/getResourceAsStream/getIcon all use the same strategy to find a resource:

the fallback sequence is:

  1. look for static resources (those that are created at compiletime) somewhere relative to the current classloader (available for targetClass != null only)
    1. look in classpath of targetClass: [packagename]/resourcePrefix/[resourceName]
    2. look in classpath analogon below shared resource location: /resourcePrefix/[packageName]/[resourceName]
    3. look in shared resource location: /resourcePrefix/[resourceName]
  2. look for dynamic resources (those created/manipulated at runtime) in the file system
    1. will be removed: - no need to assume some hardcoded dir relative to an explicitly set location look in default resourceDir: [userResourceDir]/resourcePrefix/[resourceName]
    2. look in userResourceDir directly: [userResourceDir]/[resourceName]
NOTE: exceptions are caught silently - if one occured the returned URL/InputStream/Icon is null. That's the same behaviour as in class.getResource()/getResourceAsStream.

PENDING: lookup strategy should be encapsulated in pluggable strategy

NOTE: does use context classloader for dynamic class loading. Framework client code should call ResourceManager.getClass() instead Class.forName().

THINK: reversing the outer 1 and 2 would enable dynamic replace of resources at runtime?

Version:
$Revision: 1.2 $ - $Date: 2004/09/29 14:40:19 $
Author:
(C) Jeanette Winzenburg, Berlin

Field Summary
protected  java.lang.String resourcePrefix
          the path element of the shared resource path.
 
Method Summary
 java.lang.String getBundleProperty(java.lang.String key)
           
 java.lang.Class getClass(java.lang.String className)
           
 javax.swing.Icon getIcon(java.lang.String resourceName, java.lang.Class targetClass)
          returns an icon with fallback-handling.
 javax.swing.ImageIcon getImageIcon(java.lang.String resourceName, java.lang.Class targetClass)
           
static ResourceManager getInstance()
          returns instance of ResourceManager.
 java.lang.String getProperty(java.lang.String key)
           
 java.net.URL getResource(java.lang.String resourceName, java.lang.Class targetClass)
          returns an URL with fallback-handling.
 java.io.InputStream getResourceAsStream(java.lang.String resourceName, java.lang.Class targetClass)
          returns an InputStream with fallback-handling.
 java.util.ResourceBundle getResourceBundle(java.lang.String resourceName, java.lang.Class targetClass)
           
 java.lang.String getResourcePrefix()
           
 java.lang.String getUserResourceDir()
           
 void setResourcePrefix(java.lang.String prefix)
          sets the classpath relative path for the resources.
 void setUserBundlePath(java.lang.String path, java.lang.ClassLoader loader)
           
 void setUserResourceDir(java.lang.String dir)
          set user defined resource directory.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

resourcePrefix

protected java.lang.String resourcePrefix
the path element of the shared resource path.

Method Detail

getInstance

public static ResourceManager getInstance()
returns instance of ResourceManager.


getResource

public java.net.URL getResource(java.lang.String resourceName,
                                java.lang.Class targetClass)
returns an URL with fallback-handling.


getResourceBundle

public java.util.ResourceBundle getResourceBundle(java.lang.String resourceName,
                                                  java.lang.Class targetClass)

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String resourceName,
                                               java.lang.Class targetClass)
returns an InputStream with fallback-handling.


getIcon

public javax.swing.Icon getIcon(java.lang.String resourceName,
                                java.lang.Class targetClass)
returns an icon with fallback-handling.


getImageIcon

public javax.swing.ImageIcon getImageIcon(java.lang.String resourceName,
                                          java.lang.Class targetClass)

setUserResourceDir

public void setUserResourceDir(java.lang.String dir)
set user defined resource directory.


getUserResourceDir

public java.lang.String getUserResourceDir()

setResourcePrefix

public void setResourcePrefix(java.lang.String prefix)
sets the classpath relative path for the resources.

a null value resets to default ( == "resources/"), a not-empty String is checked and changed to have a slash at the end, an empty String is used as is.

Parameters:
prefix -

getResourcePrefix

public java.lang.String getResourcePrefix()

getProperty

public java.lang.String getProperty(java.lang.String key)

setUserBundlePath

public void setUserBundlePath(java.lang.String path,
                              java.lang.ClassLoader loader)

getBundleProperty

public java.lang.String getBundleProperty(java.lang.String key)

getClass

public java.lang.Class getClass(java.lang.String className)
                         throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException


Copyright © 2003, 2004 SwingEmpire Jeanette Winzenburg. All Rights Reserved.