Updated Branches:
  refs/heads/sandbox/resourcefinder bba8177b4 -> af8492c47


WICKET-4617 added javadoc


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/af8492c4
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/af8492c4
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/af8492c4

Branch: refs/heads/sandbox/resourcefinder
Commit: af8492c4716a6949654ea8e40b4227dfb062bf8f
Parents: bba8177
Author: Carl-Eric Menzel <cmen...@wicketbuch.de>
Authored: Wed Jun 27 23:47:19 2012 +0200
Committer: Carl-Eric Menzel <cmen...@wicketbuch.de>
Committed: Wed Jun 27 23:47:19 2012 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Application.java   |    8 ++
 .../wicket/core/util/file/WebApplicationPath.java  |    7 +-
 .../util/resource/ClassPathResourceFinder.java     |   18 +++-
 .../resource/locator/IResourceStreamLocator.java   |    2 +-
 .../resource/locator/ResourceStreamLocator.java    |   88 ++++-----------
 .../wicket/protocol/http/WebApplication.java       |    9 +-
 .../apache/wicket/settings/IResourceSettings.java  |   17 ++-
 .../java/org/apache/wicket/util/file/Path.java     |    7 +-
 8 files changed, 70 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/Application.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java 
b/wicket-core/src/main/java/org/apache/wicket/Application.java
index 6a5ba84..e50cc0d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
@@ -1704,6 +1704,14 @@ public abstract class Application implements 
UnboundListener, IEventSink
                return 
RuntimeConfigurationType.DEPLOYMENT.equals(getConfigurationType());
        }
 
+       /**
+        * Create a resource finder to look in the given path. The default 
implementation returns a
+        * {@link Path} which will look in the filesystem.
+        * 
+        * @param path
+        *            path
+        * @return a {@link Path}
+        */
        public IResourceFinder getResourceFinderForPath(String path)
        {
                return new Path(new Folder(path));

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/core/util/file/WebApplicationPath.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/util/file/WebApplicationPath.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/util/file/WebApplicationPath.java
index 78f49fd..7bdd94d 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/util/file/WebApplicationPath.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/util/file/WebApplicationPath.java
@@ -28,10 +28,11 @@ import org.slf4j.LoggerFactory;
 
 
 /**
- * Maintain a list of paths which might either be ordinary folders of the 
filesystem or relative
- * paths to the web application's servlet context.
+ * An {@link IResourceFinder} that looks in a folder in the webapp context 
path. It will
+ * <em>not</em> load files inside WEB-INF.
  * 
  * @author Johan Compagner
+ * @author Carl-Eric Menzel
  */
 public final class WebApplicationPath implements IResourceFinder
 {
@@ -49,6 +50,8 @@ public final class WebApplicationPath implements 
IResourceFinder
         * 
         * @param servletContext
         *            The webapplication context where the resources must be 
loaded from
+        * @param path
+        *            The path inside the app context where to look.
         */
        public WebApplicationPath(final ServletContext servletContext, String 
path)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/core/util/resource/ClassPathResourceFinder.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/ClassPathResourceFinder.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/ClassPathResourceFinder.java
index 5a71c2b..bc304cf 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/ClassPathResourceFinder.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/ClassPathResourceFinder.java
@@ -22,10 +22,19 @@ import org.apache.wicket.util.file.IResourceFinder;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.string.Strings;
 
+/**
+ * An {@link IResourceFinder} that looks in a folder in the classpath.
+ * 
+ * @author Carl-Eric Menzel
+ */
 public class ClassPathResourceFinder implements IResourceFinder
 {
        private final String prefix;
 
+       /**
+        * @param prefix
+        *            The path prefix. May be null or empty to look in the 
classpath root.
+        */
        public ClassPathResourceFinder(String prefix)
        {
                if (Strings.isEmpty(prefix))
@@ -45,7 +54,7 @@ public class ClassPathResourceFinder implements 
IResourceFinder
                IResourceStream resourceStream;
                if (clazz != null)
                {
-                       resourceStream = 
getResourceStream(clazz.getClassLoader(), fullPath);
+                       resourceStream = 
getResourceStreamWithClassLoader(clazz.getClassLoader(), fullPath);
                        if (resourceStream != null)
                        {
                                return resourceStream;
@@ -54,14 +63,15 @@ public class ClassPathResourceFinder implements 
IResourceFinder
 
                // use context classloader when no specific classloader is set
                // (package resources for instance)
-               resourceStream = 
getResourceStream(Thread.currentThread().getContextClassLoader(), fullPath);
+               resourceStream = 
getResourceStreamWithClassLoader(Thread.currentThread()
+                       .getContextClassLoader(), fullPath);
                if (resourceStream != null)
                {
                        return resourceStream;
                }
 
                // use Wicket classloader when no specific classloader is set
-               resourceStream = getResourceStream(getClass().getClassLoader(), 
fullPath);
+               resourceStream = 
getResourceStreamWithClassLoader(getClass().getClassLoader(), fullPath);
                if (resourceStream != null)
                {
                        return resourceStream;
@@ -70,7 +80,7 @@ public class ClassPathResourceFinder implements 
IResourceFinder
                return null;
        }
 
-       private IResourceStream getResourceStream(ClassLoader classLoader, 
String path)
+       private IResourceStream getResourceStreamWithClassLoader(ClassLoader 
classLoader, String path)
        {
                if (classLoader != null)
                {

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/IResourceStreamLocator.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/IResourceStreamLocator.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/IResourceStreamLocator.java
index 86fa41a..c0a34e3 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/IResourceStreamLocator.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/IResourceStreamLocator.java
@@ -22,7 +22,7 @@ import org.apache.wicket.util.resource.IResourceStream;
 
 
 /**
- * Interface for code that locates resources.
+ * Interface for code that locates resources, taking into account variations 
for locale and style.
  * 
  * @author Jonathan Locke
  */

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
index 3bb279e..d18910d 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/util/resource/locator/ResourceStreamLocator.java
@@ -118,7 +118,26 @@ public class ResourceStreamLocator implements 
IResourceStreamLocator
        {
                // First try with the resource finder registered with the 
application
                // (allows for markup reloading)
-               return locateByResourceFinders(clazz, path);
+               if (finders == null)
+               {
+                       finders = 
Application.get().getResourceSettings().getResourceFinders();
+               }
+
+               IResourceStream result;
+               for (IResourceFinder finder : finders)
+               {
+                       // Log attempt
+                       if (log.isDebugEnabled())
+                       {
+                               log.debug("Attempting to locate resource '" + 
path + "' on path " + finder);
+                       }
+                       result = finder.find(clazz, path);
+                       if (result != null)
+                       {
+                               return result;
+                       }
+               }
+               return null;
        }
 
        /**
@@ -159,42 +178,6 @@ public class ResourceStreamLocator implements 
IResourceStreamLocator
                return null;
        }
 
-       /**
-        * Search the the resource my means of the various classloaders 
available
-        * 
-        * @param clazz
-        * @param path
-        * @return resource stream
-        */
-       protected IResourceStream locateByClassLoader(final Class<?> clazz, 
final String path)
-       {
-               IResourceStream resourceStream = null;
-
-               if (clazz != null)
-               {
-                       resourceStream = 
getResourceStream(clazz.getClassLoader(), path);
-                       if (resourceStream != null)
-                       {
-                               return resourceStream;
-                       }
-               }
-
-               // use context classloader when no specific classloader is set
-               // (package resources for instance)
-               resourceStream = 
getResourceStream(Thread.currentThread().getContextClassLoader(), path);
-               if (resourceStream != null)
-               {
-                       return resourceStream;
-               }
-
-               // use Wicket classloader when no specific classloader is set
-               resourceStream = getResourceStream(getClass().getClassLoader(), 
path);
-               if (resourceStream != null)
-               {
-                       return resourceStream;
-               }
-               return null;
-       }
 
        /**
         * Get the resource
@@ -233,37 +216,6 @@ public class ResourceStreamLocator implements 
IResourceStreamLocator
        }
 
        /**
-        * Search the resource by means of the application registered resource 
finder
-        * 
-        * @param clazz
-        * @param path
-        * @return resource stream
-        */
-       protected IResourceStream locateByResourceFinders(final Class<?> clazz, 
final String path)
-       {
-               if (finders == null)
-               {
-                       finders = 
Application.get().getResourceSettings().getResourceFinders();
-               }
-
-               IResourceStream result;
-               for (IResourceFinder finder : finders)
-               {
-                       // Log attempt
-                       if (log.isDebugEnabled())
-                       {
-                               log.debug("Attempting to locate resource '" + 
path + "' on path " + finder);
-                       }
-                       result = finder.find(clazz, path);
-                       if (result != null)
-                       {
-                               return result;
-                       }
-               }
-               return null;
-       }
-
-       /**
         * 
         * @see 
org.apache.wicket.core.util.resource.locator.IResourceStreamLocator#newResourceNameIterator(java.lang.String,
         *      java.util.Locale, java.lang.String, java.lang.String, 
java.lang.String, boolean)

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
index fcb145e..f2775b5 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
@@ -76,6 +76,7 @@ import org.apache.wicket.util.crypt.CharEncoding;
 import org.apache.wicket.util.file.FileCleaner;
 import org.apache.wicket.util.file.IFileCleaner;
 import org.apache.wicket.util.file.IResourceFinder;
+import org.apache.wicket.util.file.Path;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.PackageName;
 import org.apache.wicket.util.string.Strings;
@@ -787,9 +788,13 @@ public abstract class WebApplication extends Application
        }
 
        /**
-        * By default it return a WebApplicationPath
+        * Create a resource finder to look in the given path. The 
implementation in
+        * {@link WebApplication} returns a {@link WebApplicationPath} which 
will look in the webapp
+        * context.
         * 
-        * @return resource finder
+        * @param path
+        *            path
+        * @return a {@link Path}
         */
        @Override
        public IResourceFinder getResourceFinderForPath(String path)

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java 
b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
index a316616..8e89ed9 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/settings/IResourceSettings.java
@@ -30,6 +30,7 @@ import 
org.apache.wicket.markup.head.ResourceAggregator.RecordedHeaderItem;
 import org.apache.wicket.markup.html.IPackageResourceGuard;
 import org.apache.wicket.markup.html.PackageResourceGuard;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.resource.caching.IResourceCachingStrategy;
 import org.apache.wicket.resource.IPropertiesFactory;
 import org.apache.wicket.resource.IPropertiesFactoryContext;
@@ -46,7 +47,7 @@ import org.apache.wicket.util.watch.IModificationWatcher;
  * <i>resourcePollFrequency </i> (defaults to no polling frequency) - 
Frequency at which resources
  * should be polled for changes.
  * <p>
- * <i>resourceFinder </i> (classpath) - Set this to alter the search path for 
resources.
+ * <i>resourceFinders</i> - Add/modify this to alter the search path for 
resources.
  * <p>
  * <i>useDefaultOnMissingResource </i> (defaults to true) - Set to true to 
return a default value if
  * available when a required string resource is not found. If set to false 
then the
@@ -133,9 +134,12 @@ public interface IResourceSettings extends 
IPropertiesFactoryContext
        IResourceFactory getResourceFactory(final String name);
 
        /**
-        * Gets the resource finder to use when searching for resources.
+        * Gets the resource finders to use when searching for resources. By 
default, a finder that
+        * looks in the classpath root is configured. {@link WebApplication} 
adds the classpath
+        * directory META-INF/resources. To configure additional search paths 
or filesystem paths, add
+        * to this list.
         * 
-        * @return Returns the resourceFinder.
+        * @return Returns the resourceFinders.
         * @see IResourceSettings#setResourceFinder(IResourceFinder)
         */
        List<IResourceFinder> getResourceFinders();
@@ -199,9 +203,10 @@ public interface IResourceSettings extends 
IPropertiesFactoryContext
        void setPropertiesFactory(IPropertiesFactory factory);
 
        /**
-        * Sets the finder to use when searching for resources. By default, the 
resources are located on
-        * the classpath. If you want to configure other, additional, search 
paths, you can use this
-        * method.
+        * Sets the finders to use when searching for resources. By default, 
the resources are located
+        * on the classpath. To add additional search paths, add to the list 
given by
+        * {@link #getResourceFinders()}. Use this method if you want to 
completely exchange the list of
+        * resource finders.
         * 
         * @param resourceFinder
         *            The resourceFinder to set

http://git-wip-us.apache.org/repos/asf/wicket/blob/af8492c4/wicket-util/src/main/java/org/apache/wicket/util/file/Path.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/file/Path.java 
b/wicket-util/src/main/java/org/apache/wicket/util/file/Path.java
index cd62c98..efa1924 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/file/Path.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/file/Path.java
@@ -23,9 +23,10 @@ import org.apache.wicket.util.resource.IResourceStream;
 
 
 /**
- * Maintains a list of folders as a path.
+ * An {@link IResourceFinder} that looks for its resources in a filesystem 
path.
  * 
  * @author Jonathan Locke
+ * @author Carl-Eric Menzel
  */
 public class Path implements IResourceFinder
 {
@@ -83,11 +84,11 @@ public class Path implements IResourceFinder
        {
                try
                {
-                       return "[folder = " + folder.getCanonicalPath() + "]";
+                       return "[Path: folder = " + folder.getCanonicalPath() + 
"]";
                }
                catch (IOException e)
                {
-                       return "[folder]";
+                       return "[Path: exception while inspecting folder]";
                }
        }
 }

Reply via email to