1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2006 IBM Corporation and others. 3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * All rights reserved. This program and the accompanying materials 4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are made available under the terms of the Eclipse Public License v1.0 5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * which accompanies this distribution, and is available at 6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * http://www.eclipse.org/legal/epl-v10.html 7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpackage org.eclipse.releng.services.bugzilla; 10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.BufferedReader; 13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.InputStreamReader; 14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.PrintWriter; 15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.net.URL; 16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.net.URLConnection; 17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.net.URLEncoder; 18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Enumeration; 19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Hashtable; 20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Iterator; 21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.LinkedHashMap; 22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.regex.Matcher; 23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.regex.Pattern; 24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.net.ssl.HttpsURLConnection; 26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.BuildException; 28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.Task; 29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.eclipse.releng.util.bugzilla.Messages; 31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic class UpdateBugStateTask extends Task 34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll{ 35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String UTF_8 = "UTF-8"; //$NON-NLS-1$ 36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String GET = "GET"; //$NON-NLS-1$ 38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String CTYPE_RDF = "&ctype=rdf"; //$NON-NLS-1$ 40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String URL_TARGET_MILESTONE = "&target_milestone="; //$NON-NLS-1$ 42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String URL_CHFIELDTO = "&chfieldto="; //$NON-NLS-1$ 44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String URL_BUG_STATUS = "&bug_status="; //$NON-NLS-1$ 46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTTPS_BUGS_ECLIPSE_ORG_BUGS_BUGLIST_CGI_PRODUCT = "https://bugs.eclipse.org/bugs/buglist.cgi?product="; //$NON-NLS-1$ 48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String COOKIE = "Cookie"; //$NON-NLS-1$ 50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String APPLICATION_X_WWW_FORM_URLENCODED = "application/x-www-form-urlencoded"; //$NON-NLS-1$ 52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String CONTENT_TYPE = "Content-type"; //$NON-NLS-1$ 54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String POST = "POST"; //$NON-NLS-1$ 56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTTPS_BUGS_ECLIPSE_ORG_BUGS_PROCESS_BUG_CGI = "https://bugs.eclipse.org/bugs/process_bug.cgi"; //$NON-NLS-1$ 58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUG_STATUS = "bug_status"; //$NON-NLS-1$ 60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String AMP = "&"; //$NON-NLS-1$ 62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String EQ = "="; //$NON-NLS-1$ 64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTTPS_BUGS_ECLIPSE_ORG_BUGS_SHOW_BUG_CGI_ID = "https://bugs.eclipse.org/bugs/show_bug.cgi?id="; //$NON-NLS-1$ 66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String CTYPE_XML = "&ctype=xml"; //$NON-NLS-1$ 68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String RESOLVE = "resolve"; //$NON-NLS-1$ 70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String RESOLUTION = "resolution"; //$NON-NLS-1$ 72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String KNOB = "knob"; //$NON-NLS-1$ 74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String LONGDESCLENGTH = "longdesclength"; //$NON-NLS-1$ 76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String SHORT_DESC = "short_desc"; //$NON-NLS-1$ 78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUG_FILE_LOC = "bug_file_loc"; //$NON-NLS-1$ 80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUG_SEVERITY = "bug_severity"; //$NON-NLS-1$ 82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String PRIORITY = "priority"; //$NON-NLS-1$ 84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String OP_SYS = "op_sys"; //$NON-NLS-1$ 86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String REP_PLATFORM = "rep_platform"; //$NON-NLS-1$ 88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String TARGET_MILESTONE = "target_milestone"; //$NON-NLS-1$ 90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String COMPONENT = "component"; //$NON-NLS-1$ 92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String VERSION = "version"; //$NON-NLS-1$ 94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String PRODUCT = "product"; //$NON-NLS-1$ 96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String ID = "id"; //$NON-NLS-1$ 98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String COMMENT = "comment"; //$NON-NLS-1$ 100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String PROCESS_BUG = "process_bug"; //$NON-NLS-1$ 102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String FORM_NAME = "form_name"; //$NON-NLS-1$ 104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUGZILLA_LOGINCOOKIE = "; Bugzilla_logincookie="; //$NON-NLS-1$ 106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUGZILLA_LOGIN = "Bugzilla_login="; //$NON-NLS-1$ 108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String DIGITS_REGEX = "(\\d+)"; //$NON-NLS-1$ 110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String COLON = ":"; //$NON-NLS-1$ 112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String DASH = "-"; //$NON-NLS-1$ 114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUGID_REGEX = "<bz:id(?: nc:parseType=\"Integer\")>(\\d+)</bz:id>"; //$NON-NLS-1$ 116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BUILDID_REGEX = "([IMNRS]?-?)(\\d{4})(\\d{2})(\\d{2})-?(\\d{2})(\\d{2})"; //$NON-NLS-1$ 118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String TIMESTAMP_REGEX = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; //$NON-NLS-1$ 120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String JS = "Java said:"; //$NON-NLS-1$ 122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String SP = " "; //$NON-NLS-1$ 124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String XML_REGEX = "<(\\S+)>([^<]+)</\\1>"; //$NON-NLS-1$ 126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String NL = "\n"; //$NON-NLS-1$ 128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String CSO = ", or "; //$NON-NLS-1$ 130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String CS = ", "; //$NON-NLS-1$ 132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_IV = "INVALID"; //$NON-NLS-1$ 134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_WF = "WONTFIX"; //$NON-NLS-1$ 136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_LT = "LATER"; //$NON-NLS-1$ 138402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 139402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_RM = "REMIND"; //$NON-NLS-1$ 140402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 141402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_WK = "WORKSFORME"; //$NON-NLS-1$ 142402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 143402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_FX = "FIXED"; //$NON-NLS-1$ 144402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 145402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_RE = "REOPENED"; //$NON-NLS-1$ 146402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 147402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_AS = "ASSIGNED"; //$NON-NLS-1$ 148402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 149402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_NEW = "NEW"; //$NON-NLS-1$ 150402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 151402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String BZ_UC = "UNCONFIRMED"; //$NON-NLS-1$ 152402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 153402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String EMPTY = ""; //$NON-NLS-1$ 154402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 155402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String LT = "<"; //$NON-NLS-1$ 156402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 157402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String GT = ">"; //$NON-NLS-1$ 158402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 159402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String QUOT = "\""; //$NON-NLS-1$ 160402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 161402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String APOS = "'"; //$NON-NLS-1$ 162402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 163402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_APOS = "'"; //$NON-NLS-1$ 164402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 165402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_QUOT = """; //$NON-NLS-1$ 166402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 167402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_LT = "<"; //$NON-NLS-1$ 168402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 169402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_GT = ">"; //$NON-NLS-1$ 170402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 171402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_NBSP = " "; //$NON-NLS-1$ 172402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 173402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String HTML_AMP = "&"; //$NON-NLS-1$ 174402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 175402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int debug; 176402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 177402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int login; 178402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 179402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int loginCookie; 180402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 181402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String product; 182402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 183402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String status; 184402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 185402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String buildID; 186402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 187402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String buildAlias; 188402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 189402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String milestone; 190402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 191402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String bugList; 192402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 193402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String resolution; 194402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 195402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String endDate; 196402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 197402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private LinkedHashMap trans; 198402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 199402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public UpdateBugStateTask() 200402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 201402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll debug = 1; 202402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 203402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll login = 0; 204402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll loginCookie = 0; 205402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll product = EMPTY; 206402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll status = EMPTY; 207402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildID = EMPTY; 208402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildAlias = EMPTY; 209402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll endDate = EMPTY; 210402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll milestone = EMPTY; 211402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugList = EMPTY; 212402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resolution = BZ_FX; 213402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 214402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans = new LinkedHashMap(8, 0.75f, false); 215402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_APOS, APOS); 216402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_QUOT, QUOT); 217402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_LT, LT); 218402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_GT, GT); 219402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_NBSP, SP); 220402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll trans.put(HTML_AMP, AMP); 221402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 222402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 223402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDebug(int d) 224402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 225402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll debug = d; 226402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 227402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 228402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setBugList(String b) 229402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 230402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugList = b; 231402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 232402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 233402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setProduct(String p) 234402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 235402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll product = p; 236402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 237402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 238402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setStatus(String s) 239402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 240402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (s.equals(BZ_UC) || s.equals(BZ_NEW) || s.equals(BZ_AS) || s.equals(BZ_RE)) 241402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 242402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll status = s; 243402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 244402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 245402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 246402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.invalidStatus") + "!" + SP + //$NON-NLS-1$ //$NON-NLS-2$ 247402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.expectedOne") + SP + BZ_UC + CS + BZ_NEW + CS + BZ_AS + CSO + BZ_RE); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 248402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 249402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 250402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 251402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setLogin(int l) 252402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 253402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll login = l; 254402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 255402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 256402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setLoginCookie(int lc) 257402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 258402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll loginCookie = lc; 259402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 260402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 261402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setResolution(String r) 262402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 263402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (r.equals(BZ_FX) || r.equals(BZ_IV) || r.equals(BZ_WF) || r.equals(BZ_LT) || r.equals(BZ_RM) || r.equals(BZ_WK)) 264402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 265402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resolution = r; 266402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 267402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 268402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 269402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.invalidResolution") + "!" + SP + //$NON-NLS-1$ //$NON-NLS-2$ 270402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.expected") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 271402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + SP + BZ_FX + CS + BZ_IV + CS + BZ_WF + CS + BZ_LT + CS + BZ_RM + CSO + BZ_WK + SP 272402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "(" + Messages.getString("UpdateBugStateTask.default") + COLON + SP + BZ_FX + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 273402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 274402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 275402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 276402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setEndDate(String t) 277402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 278402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Pattern p = Pattern.compile(TIMESTAMP_REGEX); 279402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Matcher m = p.matcher(t); 280402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (m.matches()) 281402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 282402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll endDate = m.group(1) + DASH + m.group(2) + DASH + m.group(3) + SP + m.group(4) + COLON + m.group(5); 283402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 284402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 285402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 286402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.invalidTimestamp") + COLON + SP + t + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 287402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 288402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 289402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 290402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setBuildID(String t) 291402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 292402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Pattern p = Pattern.compile(BUILDID_REGEX); 293402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Matcher m = p.matcher(t); 294402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (m.matches()) 295402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 296402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildID = m.group(1) + m.group(2) + m.group(3) + m.group(4) + m.group(5) + m.group(6); 297402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 298402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 299402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 300402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.invalidBuildID") + COLON + SP + t + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 301402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 302402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 303402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 304402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setBuildAlias(String b) 305402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 306402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildAlias = b; 307402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 308402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 309402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setMilestone(String m) 310402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 311402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll milestone = m; 312402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 313402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 314402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic void execute() throws BuildException 315402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 316402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (login == 0) 317402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 318402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.expectingLogin") + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 319402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 320402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (loginCookie == 0) 321402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 322402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.expectingLogincookie") + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 323402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 324402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (status.equals(EMPTY)) 325402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 326402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.expectingStatus") + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 327402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 328402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 329402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* we take an explicit list OR do a query, not both */ 330402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!bugList.equals(EMPTY) && endDate.equals(EMPTY) && milestone.equals(EMPTY) && product.equals(EMPTY)) 331402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 332402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 333402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 334402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.usingBugList")); //$NON-NLS-1$ 335402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 336402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Pattern p = Pattern.compile(DIGITS_REGEX); 337402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Matcher m = p.matcher(bugList); 338402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (m.find()) 339402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 340402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int bugID = Integer.parseInt(m.group(1)); 341402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 342402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 343402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.found") + SP + bugID); //$NON-NLS-1$ 344402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 345402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll doBug(bugID); 346402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 347402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 348402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else if (bugList.equals(EMPTY)) 349402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 350402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (product.equals(EMPTY)) 351402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 352402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.expectingProduct") + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 353402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 354402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 355402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 356402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 357402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.queryingFor") + SP + //$NON-NLS-1$ 358402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll (!status.equals(EMPTY) ? status + SP : EMPTY) + 359402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll (!product.equals(EMPTY) ? product + SP : EMPTY) + 360402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll (!milestone.equals(EMPTY) ? milestone + SP : EMPTY) + 361402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.bugs")); //$NON-NLS-1$ //$NON-NLS-2$ 362402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 363402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 364402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* the Bugzilla search form generates a massive URL, but thankfully doesn't 365402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * demand all sorts of superfluous fields like when updating a bug */ 366402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String url = HTTPS_BUGS_ECLIPSE_ORG_BUGS_BUGLIST_CGI_PRODUCT + urlEncode(product) + URL_BUG_STATUS + urlEncode(status) 367402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + URL_CHFIELDTO + urlEncode(endDate) + URL_TARGET_MILESTONE + urlEncode(milestone) + CTYPE_RDF; 368402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 369402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 370402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.connectingTo") + SP + //$NON-NLS-1$ 371402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll url + SP + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 372402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 373402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll HttpsURLConnection bugsconn = getConn(url, GET, true, false, EMPTY); 374402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String bugs = slurpStream(bugsconn); 375402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 376402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 377402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.gotBugList") + COLON); //$NON-NLS-1$ 378402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(bugs); 379402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 380402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 381402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Pattern p = Pattern.compile(BUGID_REGEX); 382402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Matcher m = p.matcher(bugs); 383402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (m.find()) { 384402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (m.find()) 385402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 386402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int bugID = Integer.parseInt(m.group(1)); 387402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 388402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 389402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println(Messages.getString("UpdateBugStateTask.found") + SP + bugID); //$NON-NLS-1$ 390402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 391402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll doBug(bugID); 392402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 393402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 394402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 395402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 396402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("No bugs found matching specified state" + SP + "(" + status + "). Nothing to do!"); 397402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 398402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 399402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 400402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 401402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.ambiguousRequest") + CS + //$NON-NLS-1$ 402402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.mutuallyExclusive") + "!"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 403402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 404402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } private void doBug(int bugID) throws BuildException 405402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 406402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (bugID == 0) 407402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 408402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.invalidBugID") + SP + bugID + "!"); //$NON-NLS-1$ //$NON-NLS-2$ 409402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 410402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 411402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String bugcookie = BUGZILLA_LOGIN + login + BUGZILLA_LOGINCOOKIE + loginCookie; 412402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String buildstring = EMPTY; 413402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (buildAlias.equals(EMPTY) && buildID.equals(EMPTY)) 414402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 415402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildstring = Messages.getString("UpdateBugStateTask.latestBuild"); //$NON-NLS-1$ 416402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 417402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else if (!buildAlias.equals(EMPTY) && !buildID.equals(EMPTY)) 418402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 419402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildstring = buildAlias + SP + "(" + buildID + ")"; //$NON-NLS-1$ //$NON-NLS-2$ 420402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 421402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 422402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 423402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buildstring = (!buildAlias.equals(EMPTY) ? buildAlias : buildID); 424402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 425402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 426402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Hashtable args = new Hashtable(); 427402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(FORM_NAME, PROCESS_BUG); 428402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(COMMENT, Messages.getString("UpdateBugStateTask.fixedIn") + SP + buildstring + "."); //$NON-NLS-1$ //$NON-NLS-2$ 429402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(ID, new Integer(bugID)); 430402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(PRODUCT, EMPTY); 431402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(VERSION, EMPTY); 432402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(COMPONENT, EMPTY); 433402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(TARGET_MILESTONE, EMPTY); 434402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(REP_PLATFORM, EMPTY); 435402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(OP_SYS, EMPTY); 436402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(PRIORITY, EMPTY); 437402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(BUG_SEVERITY, EMPTY); 438402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(BUG_FILE_LOC, EMPTY); 439402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(SHORT_DESC, EMPTY); 440402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(LONGDESCLENGTH, new Integer(1)); //Bugzilla doesn't seem to use this, but demands it anyways 441402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(KNOB, RESOLVE); 442402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(RESOLUTION, resolution); 443402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 444402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 445402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 446402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.usingCookie") + COLON + SP + bugcookie); //$NON-NLS-1$ 447402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.usingComment") + COLON + SP + args.get(COMMENT).toString()); //$NON-NLS-1$ 448402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 449402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 450402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* slurp xml for bugID */ 451402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String url = HTTPS_BUGS_ECLIPSE_ORG_BUGS_SHOW_BUG_CGI_ID + urlEncode(args.get(ID).toString()) + CTYPE_XML; 452402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 453402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 454402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.connectingTo") + SP + //$NON-NLS-1$ 455402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll url + SP + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 456402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 457402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll HttpsURLConnection xmlconn = getConn(url, GET, true, false, EMPTY); 458402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String xml = slurpStream(xmlconn); 459402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 460402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 461402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.gotXML") + COLON); //$NON-NLS-1$ 462402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(xml); 463402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 464402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll xmlconn.disconnect(); 465402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 466402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* parse xml, build post string */ 467402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String req = EMPTY; 468402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Hashtable pxml = parseXML(xml); 469402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (Enumeration e = args.keys(); e.hasMoreElements();) 470402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 471402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String elem = e.nextElement().toString(); 472402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* sometimes Bugzilla omits bug_file_loc if it's blank... */ 473402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (args.get(elem).equals(EMPTY) && pxml.get(elem) != null) 474402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 475402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll args.put(elem, pxml.get(elem)); 476402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 477402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 478402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll req += urlEncode(elem) + EQ + urlEncode(args.get(elem).toString()) + AMP; 479402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 480402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 481402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll req = req.substring(0, req.length() - 1); 482402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 483402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* update bug, if applicable */ 484402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (pxml.get(BUG_STATUS) == null) 485402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 486402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 0) 487402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 488402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println(Messages.getString("UpdateBugStateTask.noBugStatus") + SP + //$NON-NLS-1$ 489402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugID + CS + Messages.getString("UpdateBugStateTask.missingBug")); //$NON-NLS-1$ //$NON-NLS-2$ 490402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 491402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 492402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else if (pxml.get(BUG_STATUS).equals(status)) 493402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 494402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String bugurl = HTTPS_BUGS_ECLIPSE_ORG_BUGS_PROCESS_BUG_CGI; 495402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 496402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 497402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.connectingTo") + SP + //$NON-NLS-1$ 498402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugurl + SP + "..."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 499402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 500402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll HttpsURLConnection bugconn = getConn(bugurl, POST, true, true, bugcookie); 501402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 502402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 503402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 504402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.postingData") + COLON); //$NON-NLS-1$ 505402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(req); 506402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 507402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sendStream(bugconn, req); 508402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String response = slurpStream(bugconn); 509402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 510402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // trap for invalid login cookie 511402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (response.indexOf(Messages.getString("UpdateBugStateTask.legitimateLoginAndPassword")) > 0) //$NON-NLS-1$ 512402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 513402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.couldNotLogIn")); //$NON-NLS-1$ 514402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.BugzillaReplied") + COLON + SP + //$NON-NLS-1$ 515402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "\"" + Messages.getString("UpdateBugStateTask.legitimateLoginAndPassword") + "\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 516402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 517402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 518402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.gotResponse") + COLON); //$NON-NLS-1$ 519402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(response); 520402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 521402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugconn.disconnect(); 522402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.setBugFailed") + SP + bugID + SP + //$NON-NLS-1$ 523402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.to") + SP + resolution + SP + //$NON-NLS-1$ 524402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "(" + Messages.getString("UpdateBugStateTask.was") + SP + pxml.get(BUG_STATUS) + ")" + COLON + SP + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 525402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "\"" + Messages.getString("UpdateBugStateTask.fixedIn") + SP + buildstring + ".\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 526402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 527402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 528402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 529402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 530402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 531402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.gotResponse") + COLON); //$NON-NLS-1$ 532402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(response); 533402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 534402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll bugconn.disconnect(); 535402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 0) 536402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 537402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println(Messages.getString("UpdateBugStateTask.setBug") + SP + bugID + SP + //$NON-NLS-1$ 538402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.to") + SP + resolution + SP + //$NON-NLS-1$ 539402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "(" + Messages.getString("UpdateBugStateTask.was") + SP + pxml.get(BUG_STATUS) + ")" + COLON + SP + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 540402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "\"" + Messages.getString("UpdateBugStateTask.fixedIn") + SP + buildstring + ".\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 541402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 542402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 543402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 544402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 545402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 546402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 0) 547402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 548402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println(Messages.getString("UpdateBugStateTask.ignoreBug") + SP + args.get(ID).toString() + SP + //$NON-NLS-1$ 549402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "(" + Messages.getString("UpdateBugStateTask.notInExpectedState") + SP + status + ")" + COLON + SP + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 550402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Messages.getString("UpdateBugStateTask.was") + SP + pxml.get(BUG_STATUS).toString() + "."); //$NON-NLS-1$ //$NON-NLS-2$ 551402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 552402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 553402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 554402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 555402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String urlEncode(String elem) 556402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 557402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll elem = htmlDecode(elem); 558402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 559402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 560402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 561402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll elem = URLEncoder.encode(elem, UTF_8); 562402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 563402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.io.UnsupportedEncodingException e) 564402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 565402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.couldntEncode") + SP + //$NON-NLS-1$ 566402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "'" + elem + "'" + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 567402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 568402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 569402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return elem; 570402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 571402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 572402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private HttpsURLConnection getConn(String url, String method, boolean in, boolean out, String cookie) 573402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 574402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll URL u = null; 575402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 576402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 577402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll u = new URL(url); 578402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 579402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.net.MalformedURLException e) 580402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 581402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.badURL") + CS + //$NON-NLS-1$ 582402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll url + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 583402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 584402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 585402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll URLConnection conn = null; 586402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 587402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 588402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll conn = u.openConnection(); 589402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 590402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.io.IOException e) 591402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 592402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.failedConnection") + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ 593402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 594402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll HttpsURLConnection sconn = (HttpsURLConnection)conn; 595402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 596402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 597402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 598402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.setRequestMethod(method); 599402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 600402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.net.ProtocolException e) 601402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 602402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.badHTTPMethod") + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ 603402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 604402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 605402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (method.equals(POST)) 606402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 607402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.setRequestProperty(CONTENT_TYPE, APPLICATION_X_WWW_FORM_URLENCODED); 608402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 609402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 610402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!cookie.equals(EMPTY)) 611402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 612402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.setRequestProperty(COOKIE, cookie); 613402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 614402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 615402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.setDoInput(in); 616402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.setDoOutput(out); 617402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 618402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 619402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 620402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sconn.connect(); 621402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 622402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.io.IOException e) 623402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 624402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.connectError") + SP + //$NON-NLS-1$ 625402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll url + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 626402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 627402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 628402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return sconn; 629402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 630402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 631402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void sendStream(HttpsURLConnection conn, String req) 632402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 633402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 634402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 635402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PrintWriter out = new PrintWriter(conn.getOutputStream()); 636402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll out.print(req); 637402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll out.flush(); 638402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll out.close(); 639402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 640402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.io.IOException e) 641402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 642402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.streamWriteError") + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ 643402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 644402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 645402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 646402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String slurpStream(HttpsURLConnection conn) 647402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 648402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String ret = EMPTY; 649402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try 650402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 651402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 652402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String tmp; 653402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while ((tmp = in.readLine()) != EMPTY && tmp != null) 654402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 655402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll ret += tmp + NL; 656402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 657402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 658402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll in.close(); 659402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 660402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll catch (java.io.IOException e) 661402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 662402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throw new BuildException(Messages.getString("UpdateBugStateTask.streamReadError") + "!" + SP + JS + SP + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ 663402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 664402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 665402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return ret; 666402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 667402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 668402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /* this will only keep the last comment, but we don't use the comments anyways */ 669402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Hashtable parseXML(String xml) 670402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 671402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 672402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 673402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.parsingXML") + "..."); //$NON-NLS-1$ //$NON-NLS-2$ 674402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 675402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Hashtable pxml = new Hashtable(); 676402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Pattern p = Pattern.compile(XML_REGEX); 677402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Matcher m = p.matcher(xml); 678402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (m.find()) 679402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 680402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (debug > 1) 681402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 682402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.err.println(Messages.getString("UpdateBugStateTask.found") + SP + m.group(1) + SP + EQ + SP + m.group(2)); //$NON-NLS-1$ 683402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 684402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll pxml.put(m.group(1), m.group(2)); 685402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 686402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 687402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return pxml; 688402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 689402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 690402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String htmlDecode(String str) 691402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 692402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (Iterator i = trans.keySet().iterator(); i.hasNext();) 693402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 694402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String elem = i.next().toString(); 695402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 696402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll str = Pattern.compile(elem).matcher(str).replaceAll(trans.get(elem).toString()); 697402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 698402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 699402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return str; 700402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 701402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 702402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public static void main(String args[]) 703402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 704402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll new UpdateBugStateTask(); 705402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 706402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 707