markt 2005/01/14 14:55:22
Modified: catalina/src/share/org/apache/catalina/servlets
HTMLManagerServlet.java
Log:
Better align upload behaviour of Manager & HTMLManager
Revision Changes Path
1.20 +38 -13
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/HTMLManagerServlet.java
Index: HTMLManagerServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/HTMLManagerServlet.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- HTMLManagerServlet.java 5 Jan 2005 11:54:37 -0000 1.19
+++ HTMLManagerServlet.java 14 Jan 2005 22:55:22 -0000 1.20
@@ -21,8 +21,8 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.net.URL;
import java.net.MalformedURLException;
+import java.net.URL;
import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
@@ -36,8 +36,8 @@
import org.apache.catalina.Host;
import org.apache.catalina.util.RequestUtil;
import org.apache.catalina.util.ServerInfo;
-import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.DiskFileUpload;
+import org.apache.commons.fileupload.FileItem;
/**
* Servlet that enables remote management of the web applications installed
@@ -145,8 +145,11 @@
response.setLocale(locale);
response.setContentType("text/html; charset=" + charset);
- String message = "";
+ StringWriter stringWriter = new StringWriter();
+ PrintWriter writer = new PrintWriter(stringWriter);
+ boolean uploadFailed = true;
+
// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload();
@@ -160,6 +163,8 @@
// Parse the request
String war = null;
FileItem warUpload = null;
+ File xmlFile = null;
+
try {
List items = upload.parseRequest(request);
@@ -179,14 +184,14 @@
}
while(true) {
if (warUpload == null) {
- message = sm.getString
- ("htmlManagerServlet.installUploadNoFile");
+ writer.println(sm.getString
+ ("htmlManagerServlet.installUploadNoFile"));
break;
}
war = warUpload.getName();
if (!war.toLowerCase().endsWith(".war")) {
- message = sm.getString
- ("htmlManagerServlet.installUploadNotWar",war);
+ writer.println(sm.getString
+ ("htmlManagerServlet.installUploadNotWar",war));
break;
}
// Get the filename if uploaded name includes a path
@@ -196,6 +201,9 @@
if (war.lastIndexOf('/') >= 0) {
war = war.substring(war.lastIndexOf('/') + 1);
}
+
+ String xmlName = war.substring(0,war.length()-4) + ".xml";
+
// Identify the appBase of the owning Host of this Context
// (if any)
String appBase = null;
@@ -208,8 +216,8 @@
}
File file = new File(appBaseDir,war);
if (file.exists()) {
- message = sm.getString
- ("htmlManagerServlet.installUploadWarExists",war);
+ writer.println(sm.getString
+ ("htmlManagerServlet.installUploadWarExists",war));
break;
}
warUpload.write(file);
@@ -221,12 +229,20 @@
file.delete();
throw e;
}
+
+ // Extract the context.xml file, if any
+ xmlFile = new File(appBaseDir, xmlName);
+ extractXml(file, xmlFile);
+
+ uploadFailed = false;
+
break;
}
} catch(Exception e) {
- message = sm.getString
+ String message = sm.getString
("htmlManagerServlet.installUploadFail", e.getMessage());
log(message, e);
+ writer.println(message);
} finally {
if (warUpload != null) {
warUpload.delete();
@@ -234,11 +250,19 @@
warUpload = null;
}
+ // Define the context.xml URL if present
+ String xmlURL = null;
+ if (xmlFile != null && xmlFile.exists()) {
+ xmlURL = new String("file:" + xmlFile.getAbsolutePath());
+ }
+
// If there were no errors, install the WAR
- if (message.length() == 0) {
- message = install(null, null, war);
+ if (!uploadFailed) {
+ install(writer, xmlURL, null, war);
}
+ String message = stringWriter.toString();
+
list(request, response, message);
}
@@ -528,6 +552,7 @@
return stringWriter.toString();
}
+
// ------------------------------------------------------ Private
Constants
// These HTML sections are broken in relatively small sections, because
of
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]