summaryrefslogtreecommitdiff
path: root/src/main/org/apache/tools/ant/taskdefs/optional/ide
diff options
context:
space:
mode:
authorStefan Bodewig <bodewig@apache.org>2005-03-14 11:34:58 +0000
committerStefan Bodewig <bodewig@apache.org>2005-03-14 11:34:58 +0000
commit4ac9a8932c13b7d5c9e8f15c7856a71d7044f236 (patch)
tree22e93d7858fdbfc60c3793f42bda2c953994120e /src/main/org/apache/tools/ant/taskdefs/optional/ide
parent00eb48bddc7183e3d960299901b931aefd1bf61a (diff)
downloadant-4ac9a8932c13b7d5c9e8f15c7856a71d7044f236.tar.gz
More VAJ URL encoding issues
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277934 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/main/org/apache/tools/ant/taskdefs/optional/ide')
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJRemoteUtil.java134
1 files changed, 82 insertions, 52 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJRemoteUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJRemoteUtil.java
index 02852ec9f..6c3df0f93 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJRemoteUtil.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ide/VAJRemoteUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2004 The Apache Software Foundation
+ * Copyright 2001-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -56,14 +56,15 @@ class VAJRemoteUtil implements VAJUtil {
boolean exportResources, boolean exportSources,
boolean useDefaultExcludes, boolean overwrite) {
try {
- String request = "http://" + remoteServer + "/servlet/vajexport?"
- + VAJExportServlet.WITH_DEBUG_INFO + "=" + exportDebugInfo + "&"
- + VAJExportServlet.OVERWRITE_PARAM + "=" + overwrite + "&"
- + assembleImportExportParams(destDir,
- includePatterns, excludePatterns,
- exportClasses, exportResources,
- exportSources, useDefaultExcludes);
- sendRequest(request);
+ String request = "http://" + remoteServer + "/servlet/vajexport";
+ Vector parameters = new Vector();
+ parameters.addElement(new URLParam(VAJExportServlet.WITH_DEBUG_INFO, exportDebugInfo));
+ parameters.addElement(new URLParam(VAJExportServlet.OVERWRITE_PARAM, overwrite));
+ assembleImportExportParams(parameters, destDir,
+ includePatterns, excludePatterns,
+ exportClasses, exportResources,
+ exportSources, useDefaultExcludes);
+ sendRequest(request, parameters);
} catch (Exception ex) {
throw new BuildException(ex);
}
@@ -78,14 +79,15 @@ class VAJRemoteUtil implements VAJUtil {
boolean importClasses, boolean importResources,
boolean importSources, boolean useDefaultExcludes) {
try {
- String request = "http://" + remoteServer + "/servlet/vajimport?"
- + VAJImportServlet.PROJECT_NAME_PARAM + "="
- + importProject + "&"
- + assembleImportExportParams(srcDir,
- includePatterns, excludePatterns,
- importClasses, importResources,
- importSources, useDefaultExcludes);
- sendRequest(request);
+ String request = "http://" + remoteServer + "/servlet/vajimport";
+ Vector parameters = new Vector();
+ parameters.addElement(new
+ URLParam(VAJImportServlet.PROJECT_NAME_PARAM, importProject));
+ assembleImportExportParams(parameters, srcDir,
+ includePatterns, excludePatterns,
+ importClasses, importResources,
+ importSources, useDefaultExcludes);
+ sendRequest(request, parameters);
} catch (Exception ex) {
throw new BuildException(ex);
}
@@ -93,36 +95,32 @@ class VAJRemoteUtil implements VAJUtil {
}
/**
- * Assemble string for parameters common for import and export
+ * Add parameters common for import and export to vector
* Helper method to remove double code.
*/
- private String assembleImportExportParams(
- File dir,
- String[] includePatterns, String[] excludePatterns,
- boolean includeClasses, boolean includeResources,
- boolean includeSources, boolean useDefaultExcludes) {
- String result =
- VAJToolsServlet.DIR_PARAM + "="
- + URLEncoder.encode(dir.getPath()) + "&"
- + VAJToolsServlet.CLASSES_PARAM + "=" + includeClasses + "&"
- + VAJToolsServlet.RESOURCES_PARAM + "=" + includeResources + "&"
- + VAJToolsServlet.SOURCES_PARAM + "=" + includeSources + "&"
- + VAJToolsServlet.DEFAULT_EXCLUDES_PARAM + "=" + useDefaultExcludes;
+ private void assembleImportExportParams(Vector parameters,
+ File dir,
+ String[] includePatterns, String[] excludePatterns,
+ boolean includeClasses, boolean includeResources,
+ boolean includeSources, boolean useDefaultExcludes) {
+ parameters.addElement(new URLParam(VAJToolsServlet.DIR_PARAM, dir.getPath()));
+ parameters.addElement(new URLParam(VAJToolsServlet.CLASSES_PARAM, includeClasses));
+ parameters.addElement(new URLParam(VAJToolsServlet.RESOURCES_PARAM, includeResources));
+ parameters.addElement(new URLParam(VAJToolsServlet.SOURCES_PARAM, includeSources));
+ parameters.addElement(new URLParam(VAJToolsServlet.DEFAULT_EXCLUDES_PARAM, useDefaultExcludes));
if (includePatterns != null) {
for (int i = 0; i < includePatterns.length; i++) {
- result = result + "&" + VAJExportServlet.INCLUDE_PARAM + "="
- + URLEncoder.encode(includePatterns[i]);
+ parameters.addElement(new
+ URLParam(VAJExportServlet.INCLUDE_PARAM, includePatterns[i]));
}
}
if (excludePatterns != null) {
for (int i = 0; i < excludePatterns.length; i++) {
- result = result + "&" + VAJExportServlet.EXCLUDE_PARAM + "="
- + URLEncoder.encode(excludePatterns[i]);
+ parameters.addElement(new
+ URLParam(VAJExportServlet.EXCLUDE_PARAM, excludePatterns[i]));
}
}
-
- return result;
}
/**
@@ -130,19 +128,16 @@ class VAJRemoteUtil implements VAJUtil {
*/
public void loadProjects(Vector projectDescriptions) {
try {
- String request = "http://" + remoteServer + "/servlet/vajload?";
- String delimiter = "";
+ String request = "http://" + remoteServer + "/servlet/vajload";
+ Vector parameters = new Vector();
for (Enumeration e = projectDescriptions.elements(); e.hasMoreElements();) {
VAJProjectDescription pd = (VAJProjectDescription) e.nextElement();
- request = request
- + delimiter + VAJLoadServlet.PROJECT_NAME_PARAM
- + "=" + pd.getName().replace(' ', '+')
- + "&" + VAJLoadServlet.VERSION_PARAM
- + "=" + pd.getVersion().replace(' ', '+');
- //the first param needs no delimiter, but all other
- delimiter = "&";
+ parameters.addElement(new
+ URLParam(VAJLoadServlet.PROJECT_NAME_PARAM, pd.getName()));
+ parameters.addElement(new
+ URLParam(VAJLoadServlet.VERSION_PARAM, pd.getVersion()));
}
- sendRequest(request);
+ sendRequest(request, parameters);
} catch (Exception ex) {
throw new BuildException(ex);
}
@@ -155,16 +150,51 @@ class VAJRemoteUtil implements VAJUtil {
caller.log(msg, level);
}
+
+ private class URLParam {
+ private String name;
+ private String value;
+ public URLParam(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+ public URLParam(String name, boolean value) {
+ this.name = name;
+ this.value = (new Boolean(value)).toString();
+ }
+ public void setValue(String value) { this.value = value; }
+ public void setName(String name) { this.name = name; }
+ public String getName() { return name; }
+ public String getValue() { return value; }
+ }
+
/**
* Sends a servlet request.
+ *
+ * The passed URL and parameter list are combined into a
+ * valid URL (with proper URL encoding for the parameters)
+ * and the URL is requested.
+ *
+ * @param request Request URL without trailing characters (no ?)
+ * @param parameters Vector of URLParam objects to append as parameters.
*/
- private void sendRequest(String request) {
+ private void sendRequest(String request, Vector parameters) {
boolean requestFailed = false;
+
+ // Build request & URL encode parameters
+ String url = request + "?";
+ for (int i=0; i<parameters.size(); i++) {
+ URLParam p = (URLParam)parameters.elementAt(i);
+ url += p.getName() + "=" + URLEncoder.encode(p.getValue());
+ url += (i==parameters.size()-1)?"":"&";
+ }
+
+
try {
- log("Request: " + request, MSG_DEBUG);
+ log("Request: " + url, MSG_DEBUG);
//must be HTTP connection
- URL requestUrl = new URL(request);
+ URL requestUrl = new URL(url);
HttpURLConnection connection =
(HttpURLConnection) requestUrl.openConnection();
@@ -179,8 +209,8 @@ class VAJRemoteUtil implements VAJUtil {
}
}
if (is == null) {
- log("Can't get " + request, MSG_ERR);
- throw new BuildException("Couldn't execute " + request);
+ log("Can't get " + url, MSG_ERR);
+ throw new BuildException("Couldn't execute " + url);
}
// log the response
@@ -203,7 +233,7 @@ class VAJRemoteUtil implements VAJUtil {
} catch (IOException ex) {
log("Error sending tool request to VAJ" + ex, MSG_ERR);
- throw new BuildException("Couldn't execute " + request);
+ throw new BuildException("Couldn't execute " + url);
}
if (requestFailed) {
throw new BuildException("VAJ tool request failed");