1 // Copyright 2012 Google Inc. All Rights Reserved.
3 package com
.google
.appengine
.tools
.development
;
5 import org
.mortbay
.resource
.FileResource
;
6 import org
.mortbay
.resource
.Resource
;
7 import org
.mortbay
.resource
.ResourceCollection
;
12 * A {@code Resource} that represents a web root extended to include an external resource directory.
14 * We replace Jetty's baseResource with an instance of this class in order to implement our
15 * "External Resource Directory" feature.
18 public class ExtendedRootResource
extends ResourceCollection
{
19 public ExtendedRootResource(Resource webRoot
, File externalResourceDir
) {
20 super(new Resource
[] {toResource(externalResourceDir
), webRoot
});
23 private static Resource
toResource(File f
) {
25 throw new NullPointerException("externalResourceDir may not be null");
28 return new FileResource(f
.toURI().toURL());
29 } catch (Exception e
) {
30 throw new IllegalArgumentException("Invalid externalResourceDirectory: " + f
.getPath(), e
);