aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java117
1 files changed, 117 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java
new file mode 100644
index 00000000..1dc94204
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/condition/Http.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.tools.ant.taskdefs.condition;
+
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Locale;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectComponent;
+
+/**
+ * Condition to wait for a HTTP request to succeed. Its attribute(s) are:
+ * url - the URL of the request.
+ * errorsBeginAt - number at which errors begin at; default=400.
+ * requestMethod - HTTP request method to use; GET, HEAD, etc. default=GET
+ * @since Ant 1.5
+ */
+public class Http extends ProjectComponent implements Condition {
+ private static final int ERROR_BEGINS = 400;
+ private static final String DEFAULT_REQUEST_METHOD = "GET";
+
+ private String spec = null;
+ private String requestMethod = DEFAULT_REQUEST_METHOD;
+
+
+ /**
+ * Set the url attribute
+ * @param url the url of the request
+ */
+ public void setUrl(String url) {
+ spec = url;
+ }
+
+ private int errorsBeginAt = ERROR_BEGINS;
+
+ /**
+ * Set the errorsBeginAt attribute
+ * @param errorsBeginAt number at which errors begin at, default is
+ * 400
+ */
+ public void setErrorsBeginAt(int errorsBeginAt) {
+ this.errorsBeginAt = errorsBeginAt;
+ }
+
+ /**
+ * Sets the method to be used when issuing the HTTP request.
+ *
+ * @param method The HTTP request method to use. Valid values are
+ * the same as those accepted by the
+ * HttpURLConnection.setRequestMetho d() method,
+ * such as "GET", "HEAD", "TRACE", etc. The default
+ * if not specified is "GET".
+ *
+ * @see java.net.HttpURLConnection#setRequestMethod
+ * @since Ant 1.8.0
+ */
+ public void setRequestMethod(String method) {
+ this.requestMethod = method == null ? DEFAULT_REQUEST_METHOD
+ : method.toUpperCase(Locale.ENGLISH);
+ }
+
+ /**
+ * @return true if the HTTP request succeeds
+ * @exception BuildException if an error occurs
+ */
+ public boolean eval() throws BuildException {
+ if (spec == null) {
+ throw new BuildException("No url specified in http condition");
+ }
+ log("Checking for " + spec, Project.MSG_VERBOSE);
+ try {
+ URL url = new URL(spec);
+ try {
+ URLConnection conn = url.openConnection();
+ if (conn instanceof HttpURLConnection) {
+ HttpURLConnection http = (HttpURLConnection) conn;
+ http.setRequestMethod(requestMethod);
+ int code = http.getResponseCode();
+ log("Result code for " + spec + " was " + code,
+ Project.MSG_VERBOSE);
+ if (code > 0 && code < errorsBeginAt) {
+ return true;
+ }
+ return false;
+ }
+ } catch (java.net.ProtocolException pe) {
+ throw new BuildException("Invalid HTTP protocol: "
+ + requestMethod, pe);
+ } catch (java.io.IOException e) {
+ return false;
+ }
+ } catch (MalformedURLException e) {
+ throw new BuildException("Badly formed URL: " + spec, e);
+ }
+ return true;
+ }
+}