/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.catalina.webresources;

import java.io.InputStream;
import java.net.URL;
import java.util.Collections;
import java.util.Set;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.WebResourceSet;
import org.apache.catalina.util.LifecycleBase;

A WebResourceSet implementation that is not backed by a file system and behaves as if it has no resources available. This is primarily used in embedded mode when the web application is configured entirely programmatically and does not use any static resources from the file system.
/** * A {@link WebResourceSet} implementation that is not backed by a file system * and behaves as if it has no resources available. This is primarily used in * embedded mode when the web application is configured entirely * programmatically and does not use any static resources from the file system. */
public class EmptyResourceSet extends LifecycleBase implements WebResourceSet { private static final String[] EMPTY_STRING_ARRAY = new String[0]; private WebResourceRoot root; private boolean classLoaderOnly; private boolean staticOnly; public EmptyResourceSet(WebResourceRoot root) { this.root = root; }
{@inheritDoc}

This implementation always returns an EmptyResource.

/** * {@inheritDoc} * <p> * This implementation always returns an {@link EmptyResource}. */
@Override public WebResource getResource(String path) { return new EmptyResource(root, path); }
{@inheritDoc}

This implementation always returns an empty array.

/** * {@inheritDoc} * <p> * This implementation always returns an empty array. */
@Override public String[] list(String path) { return EMPTY_STRING_ARRAY; }
{@inheritDoc}

This implementation always returns an empty set.

/** * {@inheritDoc} * <p> * This implementation always returns an empty set. */
@Override public Set<String> listWebAppPaths(String path) { return Collections.emptySet(); }
{@inheritDoc}

This implementation always returns false.

/** * {@inheritDoc} * <p> * This implementation always returns false. */
@Override public boolean mkdir(String path) { return false; }
{@inheritDoc}

This implementation always returns false.

/** * {@inheritDoc} * <p> * This implementation always returns false. */
@Override public boolean write(String path, InputStream is, boolean overwrite) { return false; } @Override public void setRoot(WebResourceRoot root) { this.root = root; } @Override public boolean getClassLoaderOnly() { return classLoaderOnly; } @Override public void setClassLoaderOnly(boolean classLoaderOnly) { this.classLoaderOnly = classLoaderOnly; } @Override public boolean getStaticOnly() { return staticOnly; } @Override public void setStaticOnly(boolean staticOnly) { this.staticOnly = staticOnly; }
{@inheritDoc}

This implementation always returns null.

/** * {@inheritDoc} * <p> * This implementation always returns null. */
@Override public URL getBaseUrl() { return null; }
{@inheritDoc}

Calls to this method will be ignored as this implementation always read only.

/** * {@inheritDoc} * <p> * Calls to this method will be ignored as this implementation always read * only. */
@Override public void setReadOnly(boolean readOnly) { }
{@inheritDoc}

This implementation always returns true.

/** * {@inheritDoc} * <p> * This implementation always returns true. */
@Override public boolean isReadOnly() { return true; } @Override public void gc() { // NO-OP } @Override protected void initInternal() throws LifecycleException { // NO-OP } @Override protected void startInternal() throws LifecycleException { setState(LifecycleState.STARTING); } @Override protected void stopInternal() throws LifecycleException { setState(LifecycleState.STOPPING); } @Override protected void destroyInternal() throws LifecycleException { // NO-OP } }