MultipartConfigElement.java
/*
* 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 jakarta.servlet;
import jakarta.servlet.annotation.MultipartConfig;
/**
* The programmatic equivalent of {@link jakarta.servlet.annotation.MultipartConfig} used to configure multi-part
* handling for a Servlet when registering a Servlet via code.
*
* @since Servlet 3.0
*/
public class MultipartConfigElement {
private final String location;// = "";
private final long maxFileSize;// = -1;
private final long maxRequestSize;// = -1;
private final int fileSizeThreshold;// = 0;
/**
* Create a programmatic multi-part configuration with a specific location and defaults for the remaining
* configuration elements.
*
* @param location The temporary location to store files
*/
public MultipartConfigElement(String location) {
// Keep empty string default if location is null
if (location != null) {
this.location = location;
} else {
this.location = "";
}
this.maxFileSize = -1;
this.maxRequestSize = -1;
this.fileSizeThreshold = 0;
}
/**
* Create a programmatic multi-part configuration from the individual configuration elements.
*
* @param location The temporary location to store files
* @param maxFileSize The maximum permitted size for a single file
* @param maxRequestSize The maximum permitted size for a request
* @param fileSizeThreshold The size above which the file is save in the temporary location rather than retained in
* memory.
*/
public MultipartConfigElement(String location, long maxFileSize, long maxRequestSize, int fileSizeThreshold) {
// Keep empty string default if location is null
if (location != null) {
this.location = location;
} else {
this.location = "";
}
this.maxFileSize = maxFileSize;
this.maxRequestSize = maxRequestSize;
// Avoid threshold values of less than zero as they cause trigger NPEs
// in the Commons FileUpload port for fields that have no data.
if (fileSizeThreshold > 0) {
this.fileSizeThreshold = fileSizeThreshold;
} else {
this.fileSizeThreshold = 0;
}
}
/**
* Create a programmatic configuration from an annotation.
*
* @param annotation The source annotation to copy to create the programmatic equivalent.
*/
public MultipartConfigElement(MultipartConfig annotation) {
location = annotation.location();
maxFileSize = annotation.maxFileSize();
maxRequestSize = annotation.maxRequestSize();
fileSizeThreshold = annotation.fileSizeThreshold();
}
/**
* Obtain the location where temporary files should be stored.
*
* @return the location where temporary files should be stored.
*/
public String getLocation() {
return location;
}
/**
* Obtain the maximum permitted size for a single file.
*
* @return the maximum permitted size for a single file.
*/
public long getMaxFileSize() {
return maxFileSize;
}
/**
* Obtain the maximum permitted size for a single request.
*
* @return the maximum permitted size for a single request.
*/
public long getMaxRequestSize() {
return maxRequestSize;
}
/**
* Obtain the size above which the file is save in the temporary location rather than retained in memory.
*
* @return the size above which the file is save in the temporary location rather than retained in memory.
*/
public int getFileSizeThreshold() {
return fileSizeThreshold;
}
}