All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.support.tomcat.webresources.ExtResourceSet Maven / Gradle / Ivy

There is a newer version: 7.4.3.112-ga112
Show newest version
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.support.tomcat.webresources;

import java.io.File;
import java.io.InputStream;

import java.util.Arrays;
import java.util.Set;

import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.util.ResourceSet;
import org.apache.catalina.webresources.AbstractFileResourceSet;
import org.apache.catalina.webresources.EmptyResource;
import org.apache.catalina.webresources.FileResource;

/**
 * @author Shuyang Zhou
 */
public class ExtResourceSet extends AbstractFileResourceSet {

	public ExtResourceSet() {
		super("/");
	}

	@Override
	public WebResource getResource(String path) {
		checkPath(path);

		String webAppMount = getWebAppMount();

		WebResourceRoot webResourceRoot = getRoot();

		if (!path.startsWith(webAppMount)) {
			return new EmptyResource(webResourceRoot, path);
		}

		File file = file(path.substring(webAppMount.length()), false);

		if ((file == null) || !file.exists() || file.isDirectory()) {
			return new EmptyResource(webResourceRoot, path);
		}

		return new FileResource(
			webResourceRoot, path, file, true, getManifest());
	}

	@Override
	public String[] list(String path) {
		checkPath(path);

		String webAppMount = getWebAppMount();

		if (!path.equals(webAppMount)) {
			return EMPTY_STRING_ARRAY;
		}

		File extBaseFile = getFileBase();

		if (!extBaseFile.exists()) {
			return EMPTY_STRING_ARRAY;
		}

		String[] extFileNames = extBaseFile.list();

		Arrays.sort(extFileNames);

		return extFileNames;
	}

	@Override
	public Set listWebAppPaths(String path) {
		checkPath(path);

		String webAppMount = getWebAppMount();

		ResourceSet resourceSet = new ResourceSet<>();

		if (path.startsWith(webAppMount)) {
			File extBaseFile = getFileBase();

			File[] files = extBaseFile.listFiles();

			if (files != null) {
				if (path.charAt(path.length() - 1) != '/') {
					path = path.concat("/");
				}

				for (File file : files) {
					if (file.isFile()) {
						resourceSet.add(path.concat(file.getName()));
					}
				}
			}
		}

		resourceSet.setLocked(true);

		return resourceSet;
	}

	@Override
	public boolean mkdir(String path) {
		return false;
	}

	@Override
	public boolean write(String path, InputStream is, boolean overwrite) {
		return false;
	}

	@Override
	protected void checkType(File file) {
		if (file.exists() && !file.isDirectory()) {
			throw new IllegalArgumentException(file + " is not a directory");
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy