|
|
@@ -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"); |
|
|
|