* Issue #10134 - Delay Base Resource validation to `ContextHandler.doStart`
This commit is contained in:
parent
453526845d
commit
ad5c2985d5
|
@ -643,6 +643,13 @@ public class ContextHandler extends Handler.Wrapper implements Attributes, Alias
|
||||||
if (getContextPath() == null)
|
if (getContextPath() == null)
|
||||||
throw new IllegalStateException("Null contextPath");
|
throw new IllegalStateException("Null contextPath");
|
||||||
|
|
||||||
|
Resource baseResource = getBaseResource();
|
||||||
|
if (baseResource != null)
|
||||||
|
{
|
||||||
|
if (!Resources.isReadable(baseResource))
|
||||||
|
throw new IllegalArgumentException("Base Resource is not valid: " + baseResource);
|
||||||
|
}
|
||||||
|
|
||||||
_availability.set(Availability.STARTING);
|
_availability.set(Availability.STARTING);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -865,49 +872,45 @@ public class ContextHandler extends Handler.Wrapper implements Attributes, Alias
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the base resource for this context.
|
* <p>Set the base resource to serve content from for this context,
|
||||||
|
* which must exist and be readable when the context is started.</p>
|
||||||
*
|
*
|
||||||
* @param resourceBase The Path of the base resource for the context.
|
* @param resourceBase The base resource for the context.
|
||||||
*/
|
*/
|
||||||
public void setBaseResource(Resource resourceBase)
|
public void setBaseResource(Resource resourceBase)
|
||||||
{
|
{
|
||||||
if (isStarted())
|
if (isStarted())
|
||||||
throw new IllegalStateException(getState());
|
throw new IllegalStateException(getState());
|
||||||
|
|
||||||
// Allow resource base to be unset
|
_baseResource = resourceBase;
|
||||||
if (resourceBase == null)
|
/* Do not test if Resource is valid here, let that happen in doStart.
|
||||||
{
|
* A resource at this point in time might be invalid or doesn't exist (yet).
|
||||||
_baseResource = null;
|
* (eg: due to stop behaviors, or Configuration.deconfigure() behaviors),
|
||||||
return;
|
*/
|
||||||
}
|
|
||||||
|
|
||||||
if (Resources.isReadable(resourceBase))
|
|
||||||
_baseResource = resourceBase;
|
|
||||||
else
|
|
||||||
throw new IllegalArgumentException("Base Resource is not valid: " + resourceBase);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBaseResourceAsPath(Path path)
|
|
||||||
{
|
|
||||||
if (path == null)
|
|
||||||
{
|
|
||||||
// allow user to unset variable
|
|
||||||
setBaseResource(null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Resource resource = ResourceFactory.of(this).newResource(path);
|
|
||||||
if (!Resources.isReadable(resource))
|
|
||||||
throw new IllegalArgumentException("Base Resource is not valid: " + path);
|
|
||||||
|
|
||||||
setBaseResource(resource);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param base The resourceBase to server content from. If null the
|
* <p>Set the base resource to serve content from.</p>
|
||||||
* context resource base is used. If non-null the {@link Resource} is created
|
*
|
||||||
* from {@link ResourceFactory#of(org.eclipse.jetty.util.component.Container)} for
|
* <p>Note: the {@link Resource} is created from {@link ResourceFactory#of(org.eclipse.jetty.util.component.Container)}
|
||||||
* this context.
|
* which is tied to the lifecycle of this context.</p>
|
||||||
|
*
|
||||||
|
* @param path The path to create a base resource from.
|
||||||
|
* @see #setBaseResource(Resource)
|
||||||
|
*/
|
||||||
|
public void setBaseResourceAsPath(Path path)
|
||||||
|
{
|
||||||
|
setBaseResource(path == null ? null : ResourceFactory.of(this).newResource(path));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Set the base resource to serve content from.</p>
|
||||||
|
*
|
||||||
|
* <p>Note: the {@link Resource} is created from {@link ResourceFactory#of(org.eclipse.jetty.util.component.Container)}
|
||||||
|
* which is tied to the lifecycle of this context.</p>
|
||||||
|
*
|
||||||
|
* @param base The path to create a base resource from.
|
||||||
|
* @see #setBaseResource(Resource)
|
||||||
*/
|
*/
|
||||||
public void setBaseResourceAsString(String base)
|
public void setBaseResourceAsString(String base)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue