1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
/*
* 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 {@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}
* <p>
* This implementation always returns an {@link EmptyResource}.
*/
@Override
public WebResource getResource(String path) {
return new EmptyResource(root, path);
}
/**
* {@inheritDoc}
* <p>
* This implementation always returns an empty array.
*/
@Override
public String[] list(String path) {
return EMPTY_STRING_ARRAY;
}
/**
* {@inheritDoc}
* <p>
* This implementation always returns an empty set.
*/
@Override
public Set<String> listWebAppPaths(String path) {
return Collections.emptySet();
}
/**
* {@inheritDoc}
* <p>
* This implementation always returns false.
*/
@Override
public boolean mkdir(String path) {
return 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}
* <p>
* This implementation always returns null.
*/
@Override
public URL getBaseUrl() {
return null;
}
/**
* {@inheritDoc}
* <p>
* Calls to this method will be ignored as this implementation always read only.
*/
@Override
public void setReadOnly(boolean readOnly) {
}
/**
* {@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
}
}
|