
org.openxma.rwt.bridge.Deployer Maven / Gradle / Ivy
The newest version!
package org.openxma.rwt.bridge;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.Set;
import javax.servlet.ServletContext;
public class Deployer {
protected static final String RESOURCE_BASE = "/WEB-INF/"; //$NON-NLS-1$
protected ServletContext context;
public Deployer(ServletContext context) {
this.context = context;
}
/**
* copyResource is a convenience method to recursively copy resources from the ServletContext to
* an installation target. The default behavior will create a directory if the resourcepath ends
* in '/' and a file otherwise.
* @param resourcePath - The resource root path
* @param target - The root location where resources are to be copied
*/
protected void copyResource(String resourcePath, File target) {
if (resourcePath.endsWith("/")) { //$NON-NLS-1$
target.mkdir();
Set paths = context.getResourcePaths(resourcePath);
if (paths == null)
return;
for (Iterator it = paths.iterator(); it.hasNext();) {
String path = (String) it.next();
File newFile = new File(target, path.substring(resourcePath.length()));
copyResource(path, newFile);
}
} else {
try {
if (target.createNewFile()) {
InputStream is = null;
OutputStream os = null;
try {
is = context.getResourceAsStream(resourcePath);
if (is == null)
return;
os = new FileOutputStream(target);
byte[] buffer = new byte[8192];
int bytesRead = is.read(buffer);
while (bytesRead != -1) {
os.write(buffer, 0, bytesRead);
bytesRead = is.read(buffer);
}
} finally {
if (is != null)
is.close();
if (os != null)
os.close();
}
}
} catch (IOException e) {
context.log("Error copying resources", e); //$NON-NLS-1$
}
}
}
/**
* deleteDirectory is a convenience method to recursively delete a directory
* @param directory - the directory to delete.
* @return was the delete successful
*/
protected static boolean deleteDirectory(File directory) {
if (directory.isDirectory()) {
File[] files = directory.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
return directory.delete();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy