Return-Path: Mailing-List: contact struts-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list struts-dev@jakarta.apache.org Received: (qmail 41919 invoked from network); 17 Nov 2000 13:37:27 -0000 Received: from moutvdom00.kundenserver.de (195.20.224.149) by locus.apache.org with SMTP; 17 Nov 2000 13:37:27 -0000 Received: from [195.20.224.209] (helo=mrvdom02.schlund.de) by moutvdom00.kundenserver.de with esmtp (Exim 2.12 #2) id 13wlhl-0002JO-00 for struts-dev@jakarta.apache.org; Fri, 17 Nov 2000 14:37:25 +0100 Received: from p3ee29386.dip.t-dialin.net ([62.226.147.134] helo=192.168.2.2) by mrvdom02.schlund.de with esmtp (Exim 2.12 #2) id 13wlhI-0004Mt-00 for struts-dev@jakarta.apache.org; Fri, 17 Nov 2000 14:36:56 +0100 Date: Fri, 17 Nov 2000 14:45:27 +0100 From: Matthias Kerkhoff X-Mailer: The Bat! (v1.47 Beta/5) Personal Organization: BESToffers X-Priority: 3 (Normal) Message-ID: <161103453921.20001117144527@BESToffers.de> To: struts-dev@jakarta.apache.org Subject: PATCH: Incorrect description of Action.ERROR_KEY and in ErrorsTag Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----------FBFE158F395847" X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N ------------FBFE158F395847 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit The comment of Action.ERROR_KEY reads: /** * The request attribute key under which your action should store an error * messages, if you are using the corresponding custom tag library elements. * The stored data type should be a String array of individual errors. If * this request attribute is missing, or it is a zero-length array, the error * tag will assume that no problems need to be reported. */ public static final String ERROR_KEY = "org.apache.struts.action.ERROR"; but the saveErrors() method in the same class stores the more up-to-date ActionErrors collection wrapper. Therefore the comment should be updated to reflect the changed attribute type expected at ERROR_KEY. Attached are Action.java and ErrorsTag.java with slightly updated descriptions. I would appreciate, if one of the committers can have a look at the source and do the check-in - I have no permissions. Thanks. -- Matthias mailto:make@BESToffers.de ------------FBFE158F395847 Content-Type: application/octet-stream; name="ErrorsTag.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ErrorsTag.java" LyoKICogJEhlYWRlcjogL2hvbWUvY3ZzcHVibGljL2pha2FydGEtc3RydXRzL3NyYy9zaGFyZS9v cmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvRXJyb3JzVGFnLmphdmEsdiAxLjkgMjAwMC8xMC8xMiAy MTo1Mjo1MiBjcmFpZ21jYyBFeHAgJAogKiAkUmV2aXNpb246IDEuOSAkCiAqICREYXRlOiAyMDAw LzEwLzEyIDIxOjUyOjUyICQKICoKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogVGhlIEFwYWNoZSBTb2Z0 d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMQogKgogKiBDb3B5cmlnaHQgKGMpIDE5OTkgVGhlIEFw YWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cwogKiByZXNlcnZlZC4KICoKICog UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv ciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuCiAqCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgogKiAgICB0aGUgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAqICAgIGRpc3RyaWJ1 dGlvbi4KICoKICogMy4gVGhlIGVuZC11c2VyIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgd2l0aCB0 aGUgcmVkaXN0cmlidXRpb24sIGlmCiAqICAgIGFueSwgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dp bmcgYWNrbm93bGVnZW1lbnQ6CiAqICAgICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdh cmUgZGV2ZWxvcGVkIGJ5IHRoZQogKiAgICAgICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24g KGh0dHA6Ly93d3cuYXBhY2hlLm9yZy8pLiIKICogICAgQWx0ZXJuYXRlbHksIHRoaXMgYWNrbm93 bGVnZW1lbnQgbWF5IGFwcGVhciBpbiB0aGUgc29mdHdhcmUgaXRzZWxmLAogKiAgICBpZiBhbmQg d2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3dsZWdlbWVudHMgbm9ybWFsbHkgYXBwZWFy LgogKgogKiA0LiBUaGUgbmFtZXMgIlRoZSBKYWthcnRhIFByb2plY3QiLCAiVG9tY2F0IiwgYW5k ICJBcGFjaGUgU29mdHdhcmUKICogICAgRm91bmRhdGlvbiIgbXVzdCBub3QgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogKiAgICBmcm9tIHRoaXMgc29mdHdh cmUgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuCiAqICAgIHBl cm1pc3Npb24sIHBsZWFzZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLgogKgogKiA1LiBQcm9k dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiQXBhY2hl IgogKiAgICBub3IgbWF5ICJBcGFjaGUiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHBy aW9yIHdyaXR0ZW4KICogICAgcGVybWlzc2lvbiBvZiB0aGUgQXBhY2hlIEdyb3VwLgogKgogKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NFRCBPUiBJ TVBMSUVECiAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg SU1QTElFRCBXQVJSQU5USUVTCiAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiAqIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJT04gT1IKICogSVRTIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAogKiBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U CiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7IExPU1MgT0YKICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKICogT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiAqIE9G IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRgogKiBTVUNIIERBTUFHRS4KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogVGhpcyBzb2Z0d2Fy ZSBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlIGJ5IG1hbnkKICogaW5k aXZpZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4gIEZv ciBtb3JlCiAqIGluZm9ybWF0aW9uIG9uIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiwg cGxlYXNlIHNlZQogKiA8aHR0cDovL3d3dy5hcGFjaGUub3JnLz4uCiAqCiAqLwoKCnBhY2thZ2Ug b3JnLmFwYWNoZS5zdHJ1dHMudGFnbGliOwoKCmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwpp bXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwppbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKaW1wb3J0 IGphdmF4LnNlcnZsZXQuanNwLkpzcEV4Y2VwdGlvbjsKaW1wb3J0IGphdmF4LnNlcnZsZXQuanNw LkpzcFdyaXRlcjsKaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLlBhZ2VDb250ZXh0OwppbXBvcnQg amF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ1N1cHBvcnQ7CmltcG9ydCBvcmcuYXBhY2hlLnN0 cnV0cy5hY3Rpb24uQWN0aW9uOwppbXBvcnQgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlv bkVycm9yOwppbXBvcnQgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9yczsKaW1w b3J0IG9yZy5hcGFjaGUuc3RydXRzLnV0aWwuQmVhblV0aWxzOwppbXBvcnQgb3JnLmFwYWNoZS5z dHJ1dHMudXRpbC5FcnJvck1lc3NhZ2VzOwppbXBvcnQgb3JnLmFwYWNoZS5zdHJ1dHMudXRpbC5N ZXNzYWdlUmVzb3VyY2VzOwoKCi8qKgogKiBDdXN0b20gdGFnIHRoYXQgcmVuZGVycyBlcnJvciBt ZXNzYWdlcyBpZiBhbiBhcHByb3ByaWF0ZSByZXF1ZXN0IGF0dHJpYnV0ZQogKiBoYXMgYmVlbiBj cmVhdGVkLiAgVGhlIHRhZyBsb29rcyBmb3IgYSByZXF1ZXN0IGF0dHJpYnV0ZSB3aXRoIGEgcmVz ZXJ2ZWQKICoga2V5LCBhbmQgYXNzdW1lcyB0aGF0IGl0IGlzIGVpdGhlciBhIFN0cmluZywgYSBT dHJpbmcgYXJyYXkgb3IgYW4gRXJyb3JNZXNzYWdlcw0KICogaW5zdGFuY2UgY29udGFpbmluZyBt ZXNzYWdlIGtleXMgdG8gYmUgbG9va2VkIHVwIGluIHRoZSBhcHBsaWNhdGlvbidzIA0KICogTWVz c2FnZVJlc291cmNlcyBvciBhbiBBY3Rpb25FcnJvcnMgaW5zdGFuY2UuCiAqIDxwPgogKiBUaGUg Zm9sbG93aW5nIG9wdGlvbmFsIG1lc3NhZ2Uga2V5cyB3aWxsIGJlIHV0aWxpemVkIGlmIGNvcnJl c3BvbmRpbmcKICogbWVzc2FnZXMgZXhpc3QgZm9yIHRoZW0gaW4gdGhlIGFwcGxpY2F0aW9uIHJl c291cmNlczoKICogPHVsPgogKiA8bGk+PGI+ZXJyb3JzLmhlYWRlcjwvYj4gLSBJZiBwcmVzZW50 LCB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIHdpbGwgYmUKICogICAgIHJlbmRlcmVkIHByaW9y IHRvIHRoZSBpbmRpdmlkdWFsIGxpc3Qgb2YgZXJyb3IgbWVzc2FnZXMuCiAqIDxsaT48Yj5lcnJv cnMuZm9vdGVyPC9iPiAtIElmIHByZXNlbnQsIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2Ugd2ls bCBiZQogKiAgICAgcmVuZGVyZWQgZm9sbG93aW5nIHRoZSBpbmRpdmlkdWFsIGxpc3Qgb2YgZXJy b3IgbWVzc2FnZXMuCiAqIDxsaT48Yj4KICogPC91bD4KICoKICogQGF1dGhvciBDcmFpZyBSLiBN Y0NsYW5haGFuCiAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMS45ICQgJERhdGU6IDIwMDAvMTAvMTIg MjE6NTI6NTIgJAogKi8KCnB1YmxpYyBmaW5hbCBjbGFzcyBFcnJvcnNUYWcgZXh0ZW5kcyBUYWdT dXBwb3J0IHsKCgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIEluc3RhbmNlIFZhcmlhYmxlcwoKCiAgICAvKioKICAgICAqIFRoZSBkZWZh dWx0IGxvY2FsZSBvbiBvdXIgc2VydmVyLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBMb2Nh bGUgZGVmYXVsdExvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CgoKICAgIC8qKgogICAgICog TmFtZSBvZiB0aGUgcmVxdWVzdCBzY29wZSBhdHRyaWJ1dGUgY29udGFpbmluZyBvdXIgZXJyb3Ig bWVzc2FnZXMsCiAgICAgKiBpZiBhbnkuCiAgICAgKi8KICAgIHByaXZhdGUgU3RyaW5nIG5hbWUg PSBBY3Rpb24uRVJST1JfS0VZOwoKCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9wZXJ0aWVzCgoKICAgIC8qKgogICAg ICogUmV0dXJuIHRoZSBlcnJvcnMgYXR0cmlidXRlIG5hbWUuCiAgICAgKi8KICAgIHB1YmxpYyBT dHJpbmcgZ2V0TmFtZSgpIHsKCglyZXR1cm4gKHRoaXMubmFtZSk7CgogICAgfQoKCiAgICAvKioK ICAgICAqIFNldCB0aGUgZXJyb3JzIGF0dHJpYnV0ZSBuYW1lLgogICAgICoKICAgICAqIEBwYXJh bSBuYW1lIFRoZSBuZXcgZXJyb3JzIGF0dHJpYnV0ZSBuYW1lCiAgICAgKi8KICAgIHB1YmxpYyB2 b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKCgl0aGlzLm5hbWUgPSBuYW1lOwoKICAgIH0KCgog ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBQdWJsaWMgTWV0aG9kcwoKCiAgICAvKioKICAgICAqIFJlbmRlciB0aGUgc3BlY2lmaWVk IGVycm9yIG1lc3NhZ2VzIGlmIHRoZXJlIGFyZSBhbnkuCiAgICAgKgogICAgICogQGV4Y2VwdGlv biBKc3BFeGNlcHRpb24gaWYgYSBKU1AgZXhjZXB0aW9uIGhhcyBvY2N1cnJlZAogICAgICovCiAg ICBwdWJsaWMgaW50IGRvU3RhcnRUYWcoKSB0aHJvd3MgSnNwRXhjZXB0aW9uIHsKCgkvLyBXZXJl IGFueSBlcnJvciBtZXNzYWdlcyBzcGVjaWZpZWQ/CglBY3Rpb25FcnJvcnMgZXJyb3JzID0gbmV3 IEFjdGlvbkVycm9ycygpOwoJdHJ5IHsKCSAgICBPYmplY3QgdmFsdWUgPSBwYWdlQ29udGV4dC5n ZXRBdHRyaWJ1dGUKICAgICAgICAgICAgICAgIChuYW1lLCBQYWdlQ29udGV4dC5SRVFVRVNUX1ND T1BFKTsKCSAgICBpZiAodmFsdWUgPT0gbnVsbCkgewoJCTsKCSAgICB9IGVsc2UgaWYgKHZhbHVl IGluc3RhbmNlb2YgU3RyaW5nKSB7CgkJZXJyb3JzLmFkZChBY3Rpb25FcnJvcnMuR0xPQkFMX0VS Uk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uRXJyb3IoKFN0cmluZykg dmFsdWUpKTsKCSAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nW10pIHsKICAg ICAgICAgICAgICAgIFN0cmluZyBrZXlzW10gPSAoU3RyaW5nW10pIHZhbHVlOwogICAgICAgICAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKQogICAgICAgICAgICAg ICAgICAgIGVycm9ycy5hZGQoQWN0aW9uRXJyb3JzLkdMT0JBTF9FUlJPUiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5ldyBBY3Rpb25FcnJvcihrZXlzW2ldKSk7CiAgICAgICAgICAg IH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvck1lc3NhZ2VzKSB7CgkJU3RyaW5nIGtl eXNbXSA9ICgoRXJyb3JNZXNzYWdlcykgdmFsdWUpLmdldEVycm9ycygpOwogICAgICAgICAgICAg ICAgaWYgKGtleXMgPT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICBrZXlzID0gbmV3IFN0cmlu Z1swXTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkr KykKICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYWRkKEFjdGlvbkVycm9ycy5HTE9CQUxfRVJS T1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uRXJyb3Ioa2V5c1tp XSkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQWN0aW9uRXJyb3Jz KSB7CiAgICAgICAgICAgICAgICBlcnJvcnMgPSAoQWN0aW9uRXJyb3JzKSB2YWx1ZTsKCSAgICB9 CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgOwoJfQogICAgICAg IGlmIChlcnJvcnMuZW1wdHkoKSkKCSAgICByZXR1cm4gKEVWQUxfQk9EWV9JTkNMVURFKTsKCgkv LyBSZW5kZXIgdGhlIGVycm9yIG1lc3NhZ2VzIGFwcHJvcHJpYXRlbHkKCUxvY2FsZSBsb2NhbGUg PSBudWxsOwoJdHJ5IHsKCSAgICBsb2NhbGUgPSAoTG9jYWxlKSBwYWdlQ29udGV4dC5nZXRBdHRy aWJ1dGUKCQkoQWN0aW9uLkxPQ0FMRV9LRVksIFBhZ2VDb250ZXh0LlNFU1NJT05fU0NPUEUpOwoJ fSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsJLy8gSW52YWxpZGF0ZWQgc2Vzc2lv bgoJICAgIGxvY2FsZSA9IG51bGw7Cgl9CglpZiAobG9jYWxlID09IG51bGwpCgkgICAgbG9jYWxl ID0gZGVmYXVsdExvY2FsZTsKCU1lc3NhZ2VSZXNvdXJjZXMgbWVzc2FnZXMgPSAoTWVzc2FnZVJl c291cmNlcykKCSAgcGFnZUNvbnRleHQuZ2V0QXR0cmlidXRlKEFjdGlvbi5NRVNTQUdFU19LRVks CgkJCQkgICBQYWdlQ29udGV4dC5BUFBMSUNBVElPTl9TQ09QRSk7CglTdHJpbmcgbWVzc2FnZSA9 IG51bGw7CglTdHJpbmdCdWZmZXIgcmVzdWx0cyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKCW1lc3Nh Z2UgPSBtZXNzYWdlcy5nZXRNZXNzYWdlKGxvY2FsZSwgImVycm9ycy5oZWFkZXIiKTsKCWlmICht ZXNzYWdlICE9IG51bGwpIHsKCSAgICByZXN1bHRzLmFwcGVuZChtZXNzYWdlKTsKCSAgICByZXN1 bHRzLmFwcGVuZCgiXHJcbiIpOwoJfQogICAgICAgIEl0ZXJhdG9yIHJlcG9ydHMgPSBlcnJvcnMu Z2V0KCk7CiAgICAgICAgd2hpbGUgKHJlcG9ydHMuaGFzTmV4dCgpKSB7CiAgICAgICAgICAgIEFj dGlvbkVycm9yIHJlcG9ydCA9IChBY3Rpb25FcnJvcikgcmVwb3J0cy5uZXh0KCk7CgkgICAgbWVz c2FnZSA9CiAgICAgICAgICAgICAgICBtZXNzYWdlcy5nZXRNZXNzYWdlKGxvY2FsZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0LmdldEtleSgpLCByZXBvcnQuZ2V0 VmFsdWVzKCkpOwoJICAgIGlmIChtZXNzYWdlICE9IG51bGwpIHsKCQlyZXN1bHRzLmFwcGVuZCht ZXNzYWdlKTsKCQlyZXN1bHRzLmFwcGVuZCgiXHJcbiIpOwoJICAgIH0KCX0KCW1lc3NhZ2UgPSBt ZXNzYWdlcy5nZXRNZXNzYWdlKGxvY2FsZSwgImVycm9ycy5mb290ZXIiKTsKCWlmIChtZXNzYWdl ICE9IG51bGwpIHsKCSAgICByZXN1bHRzLmFwcGVuZChtZXNzYWdlKTsKCSAgICByZXN1bHRzLmFw cGVuZCgiXHJcbiIpOwoJfQoKCS8vIFByaW50IHRoZSByZXN1bHRzIHRvIG91ciBvdXRwdXQgd3Jp dGVyCglKc3BXcml0ZXIgd3JpdGVyID0gcGFnZUNvbnRleHQuZ2V0T3V0KCk7Cgl0cnkgewoJICAg IHdyaXRlci5wcmludChyZXN1bHRzLnRvU3RyaW5nKCkpOwoJfSBjYXRjaCAoSU9FeGNlcHRpb24g ZSkgewoJICAgIHRocm93IG5ldyBKc3BFeGNlcHRpb24oZS50b1N0cmluZygpKTsKCX0KCgkvLyBD b250aW51ZSBwcm9jZXNzaW5nIHRoaXMgcGFnZQoJcmV0dXJuIChFVkFMX0JPRFlfSU5DTFVERSk7 CgogICAgfQoKCiAgICAvKioKICAgICAqIFJlbGVhc2UgYW55IGFjcXVpcmVkIHJlc291cmNlcy4K ICAgICAqLwogICAgcHVibGljIHZvaWQgcmVsZWFzZSgpIHsKCglzdXBlci5yZWxlYXNlKCk7Cglu YW1lID0gQWN0aW9uLkVSUk9SX0tFWTsKCiAgICB9CgoKfQo= ------------FBFE158F395847 Content-Type: application/octet-stream; name="ErrorsTag.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ErrorsTag.java" LyoKICogJEhlYWRlcjogL2hvbWUvY3ZzcHVibGljL2pha2FydGEtc3RydXRzL3NyYy9zaGFyZS9v cmcvYXBhY2hlL3N0cnV0cy90YWdsaWIvZm9ybS9FcnJvcnNUYWcuamF2YSx2IDEuMSAyMDAwLzEx LzA0IDAwOjQ2OjMwIGNyYWlnbWNjIEV4cCAkCiAqICRSZXZpc2lvbjogMS4xICQKICogJERhdGU6 IDIwMDAvMTEvMDQgMDA6NDY6MzAgJAogKgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKgogKiBUaGUgQXBhY2hl IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4xCiAqCiAqIENvcHlyaWdodCAoYykgMTk5OSBU aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzCiAqIHJlc2VydmVkLgog KgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAqIGFyZSBtZXQ6CiAqCiAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAq ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4KICoKICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCiAqICAgIHRoZSBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKICogICAgZGlz dHJpYnV0aW9uLgogKgogKiAzLiBUaGUgZW5kLXVzZXIgZG9jdW1lbnRhdGlvbiBpbmNsdWRlZCB3 aXRoIHRoZSByZWRpc3RyaWJ1dGlvbiwgaWYKICogICAgYW55LCBtdXN0IGluY2x1ZGUgdGhlIGZv bGxvd2luZyBhY2tub3dsZWdlbWVudDoKICogICAgICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBz b2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlCiAqICAgICAgICBBcGFjaGUgU29mdHdhcmUgRm91bmRh dGlvbiAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuIgogKiAgICBBbHRlcm5hdGVseSwgdGhpcyBh Y2tub3dsZWdlbWVudCBtYXkgYXBwZWFyIGluIHRoZSBzb2Z0d2FyZSBpdHNlbGYsCiAqICAgIGlm IGFuZCB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IGFja25vd2xlZ2VtZW50cyBub3JtYWxseSBh cHBlYXIuCiAqCiAqIDQuIFRoZSBuYW1lcyAiVGhlIEpha2FydGEgUHJvamVjdCIsICJUb21jYXQi LCBhbmQgIkFwYWNoZSBTb2Z0d2FyZQogKiAgICBGb3VuZGF0aW9uIiBtdXN0IG5vdCBiZSB1c2Vk IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCiAqICAgIGZyb20gdGhpcyBz b2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gRm9yIHdyaXR0ZW4KICog ICAgcGVybWlzc2lvbiwgcGxlYXNlIGNvbnRhY3QgYXBhY2hlQGFwYWNoZS5vcmcuCiAqCiAqIDUu IFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJB cGFjaGUiCiAqICAgIG5vciBtYXkgIkFwYWNoZSIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhv dXQgcHJpb3Igd3JpdHRlbgogKiAgICBwZXJtaXNzaW9uIG9mIHRoZSBBcGFjaGUgR3JvdXAuCiAq CiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU0VE IE9SIElNUExJRUQKICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKICogRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBUEFDSEUgU09GVFdBUkUgRk9VTkRBVElPTiBPUgogKiBJVFMgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCiAqIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QKICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsgTE9TUyBPRgogKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAogKiBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQK ICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GCiAqIFNVQ0ggREFNQUdFLgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKgogKiBUaGlzIHNv ZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueQog KiBpbmRpdmlkdWFscyBvbiBiZWhhbGYgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LiAgRm9yIG1vcmUKICogaW5mb3JtYXRpb24gb24gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBwbGVhc2Ugc2VlCiAqIDxodHRwOi8vd3d3LmFwYWNoZS5vcmcvPi4KICoKICovCgoKcGFj a2FnZSBvcmcuYXBhY2hlLnN0cnV0cy50YWdsaWIuZm9ybTsKCgppbXBvcnQgamF2YS5pby5JT0V4 Y2VwdGlvbjsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5Mb2Nh bGU7CmltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC5Kc3BFeGNlcHRpb247CmltcG9ydCBqYXZheC5z ZXJ2bGV0LmpzcC5Kc3BXcml0ZXI7CmltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC5QYWdlQ29udGV4 dDsKaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWdTdXBwb3J0OwppbXBvcnQgb3Jn LmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbjsKaW1wb3J0IG9yZy5hcGFjaGUuc3RydXRzLmFj dGlvbi5BY3Rpb25FcnJvcjsKaW1wb3J0IG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25F cnJvcnM7CmltcG9ydCBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLkJlYW5VdGlsczsKaW1wb3J0IG9y Zy5hcGFjaGUuc3RydXRzLnV0aWwuRXJyb3JNZXNzYWdlczsKaW1wb3J0IG9yZy5hcGFjaGUuc3Ry dXRzLnV0aWwuTWVzc2FnZVJlc291cmNlczsKCgovKioKICogQ3VzdG9tIHRhZyB0aGF0IHJlbmRl cnMgZXJyb3IgbWVzc2FnZXMgaWYgYW4gYXBwcm9wcmlhdGUgcmVxdWVzdCBhdHRyaWJ1dGUNCiAq IGhhcyBiZWVuIGNyZWF0ZWQuICBUaGUgdGFnIGxvb2tzIGZvciBhIHJlcXVlc3QgYXR0cmlidXRl IHdpdGggYSByZXNlcnZlZA0KICoga2V5LCBhbmQgYXNzdW1lcyB0aGF0IGl0IGlzIGVpdGhlciBh IFN0cmluZywgYSBTdHJpbmcgYXJyYXkgb3IgYW4gRXJyb3JNZXNzYWdlcw0KICogaW5zdGFuY2Ug Y29udGFpbmluZyBtZXNzYWdlIGtleXMgdG8gYmUgbG9va2VkIHVwIGluIHRoZSBhcHBsaWNhdGlv bidzIA0KICogTWVzc2FnZVJlc291cmNlcyBvciBhbiBBY3Rpb25FcnJvcnMgaW5zdGFuY2UuDQog KiA8cD4KICogVGhlIGZvbGxvd2luZyBvcHRpb25hbCBtZXNzYWdlIGtleXMgd2lsbCBiZSB1dGls aXplZCBpZiBjb3JyZXNwb25kaW5nCiAqIG1lc3NhZ2VzIGV4aXN0IGZvciB0aGVtIGluIHRoZSBh cHBsaWNhdGlvbiByZXNvdXJjZXM6CiAqIDx1bD4KICogPGxpPjxiPmVycm9ycy5oZWFkZXI8L2I+ IC0gSWYgcHJlc2VudCwgdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSB3aWxsIGJlCiAqICAgICBy ZW5kZXJlZCBwcmlvciB0byB0aGUgaW5kaXZpZHVhbCBsaXN0IG9mIGVycm9yIG1lc3NhZ2VzLgog KiA8bGk+PGI+ZXJyb3JzLmZvb3RlcjwvYj4gLSBJZiBwcmVzZW50LCB0aGUgY29ycmVzcG9uZGlu ZyBtZXNzYWdlIHdpbGwgYmUKICogICAgIHJlbmRlcmVkIGZvbGxvd2luZyB0aGUgaW5kaXZpZHVh bCBsaXN0IG9mIGVycm9yIG1lc3NhZ2VzLgogKiA8bGk+PGI+CiAqIDwvdWw+CiAqCiAqIEBhdXRo b3IgQ3JhaWcgUi4gTWNDbGFuYWhhbgogKiBAdmVyc2lvbiAkUmV2aXNpb246IDEuMSAkICREYXRl OiAyMDAwLzExLzA0IDAwOjQ2OjMwICQKICovCgpwdWJsaWMgY2xhc3MgRXJyb3JzVGFnIGV4dGVu ZHMgVGFnU3VwcG9ydCB7CgoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnRpZXMKCgogICAgLyoqCiAgICAgKiBU aGUgZGVmYXVsdCBsb2NhbGUgb24gb3VyIHNlcnZlci4KICAgICAqLwogICAgcHJvdGVjdGVkIHN0 YXRpYyBMb2NhbGUgZGVmYXVsdExvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CgoKICAgIC8q KgogICAgICogTmFtZSBvZiB0aGUgcmVxdWVzdCBzY29wZSBhdHRyaWJ1dGUgY29udGFpbmluZyBv dXIgZXJyb3IgbWVzc2FnZXMsCiAgICAgKiBpZiBhbnkuCiAgICAgKi8KICAgIHByb3RlY3RlZCBT dHJpbmcgbmFtZSA9IEFjdGlvbi5FUlJPUl9LRVk7CgogICAgcHVibGljIFN0cmluZyBnZXROYW1l KCkgewoJcmV0dXJuICh0aGlzLm5hbWUpOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldE5hbWUo U3RyaW5nIG5hbWUpIHsKCXRoaXMubmFtZSA9IG5hbWU7CiAgICB9CgoKICAgIC8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1l dGhvZHMKCgogICAgLyoqCiAgICAgKiBSZW5kZXIgdGhlIHNwZWNpZmllZCBlcnJvciBtZXNzYWdl cyBpZiB0aGVyZSBhcmUgYW55LgogICAgICoKICAgICAqIEBleGNlcHRpb24gSnNwRXhjZXB0aW9u IGlmIGEgSlNQIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQKICAgICAqLwogICAgcHVibGljIGludCBk b1N0YXJ0VGFnKCkgdGhyb3dzIEpzcEV4Y2VwdGlvbiB7CgoJLy8gV2VyZSBhbnkgZXJyb3IgbWVz c2FnZXMgc3BlY2lmaWVkPwoJQWN0aW9uRXJyb3JzIGVycm9ycyA9IG5ldyBBY3Rpb25FcnJvcnMo KTsKCXRyeSB7CgkgICAgT2JqZWN0IHZhbHVlID0gcGFnZUNvbnRleHQuZ2V0QXR0cmlidXRlCiAg ICAgICAgICAgICAgICAobmFtZSwgUGFnZUNvbnRleHQuUkVRVUVTVF9TQ09QRSk7CgkgICAgaWYg KHZhbHVlID09IG51bGwpIHsKCQk7CgkgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFN0 cmluZykgewoJCWVycm9ycy5hZGQoQWN0aW9uRXJyb3JzLkdMT0JBTF9FUlJPUiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbkVycm9yKChTdHJpbmcpIHZhbHVlKSk7CgkgICAg fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZ1tdKSB7CiAgICAgICAgICAgICAgICBT dHJpbmcga2V5c1tdID0gKFN0cmluZ1tdKSB2YWx1ZTsKICAgICAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgICAgICAgICBlcnJvcnMu YWRkKEFjdGlvbkVycm9ycy5HTE9CQUxfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXcgQWN0aW9uRXJyb3Ioa2V5c1tpXSkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHZh bHVlIGluc3RhbmNlb2YgRXJyb3JNZXNzYWdlcykgewoJCVN0cmluZyBrZXlzW10gPSAoKEVycm9y TWVzc2FnZXMpIHZhbHVlKS5nZXRFcnJvcnMoKTsKICAgICAgICAgICAgICAgIGlmIChrZXlzID09 IG51bGwpCiAgICAgICAgICAgICAgICAgICAga2V5cyA9IG5ldyBTdHJpbmdbMF07CiAgICAgICAg ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAg ICAgICAgICAgZXJyb3JzLmFkZChBY3Rpb25FcnJvcnMuR0xPQkFMX0VSUk9SLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbkVycm9yKGtleXNbaV0pKTsKICAgICAgICAg ICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFjdGlvbkVycm9ycykgewogICAgICAgICAg ICAgICAgZXJyb3JzID0gKEFjdGlvbkVycm9ycykgdmFsdWU7CgkgICAgfQogICAgICAgIH0gY2F0 Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIDsKCX0KICAgICAgICBpZiAoZXJyb3JzLmVt cHR5KCkpCgkgICAgcmV0dXJuIChFVkFMX0JPRFlfSU5DTFVERSk7CgoJLy8gUmVuZGVyIHRoZSBl cnJvciBtZXNzYWdlcyBhcHByb3ByaWF0ZWx5CglMb2NhbGUgbG9jYWxlID0gbnVsbDsKCXRyeSB7 CgkgICAgbG9jYWxlID0gKExvY2FsZSkgcGFnZUNvbnRleHQuZ2V0QXR0cmlidXRlCgkJKEFjdGlv bi5MT0NBTEVfS0VZLCBQYWdlQ29udGV4dC5TRVNTSU9OX1NDT1BFKTsKCX0gY2F0Y2ggKElsbGVn YWxTdGF0ZUV4Y2VwdGlvbiBlKSB7CS8vIEludmFsaWRhdGVkIHNlc3Npb24KCSAgICBsb2NhbGUg PSBudWxsOwoJfQoJaWYgKGxvY2FsZSA9PSBudWxsKQoJICAgIGxvY2FsZSA9IGRlZmF1bHRMb2Nh bGU7CglNZXNzYWdlUmVzb3VyY2VzIG1lc3NhZ2VzID0gKE1lc3NhZ2VSZXNvdXJjZXMpCgkgIHBh Z2VDb250ZXh0LmdldEF0dHJpYnV0ZShBY3Rpb24uTUVTU0FHRVNfS0VZLAoJCQkJICAgUGFnZUNv bnRleHQuQVBQTElDQVRJT05fU0NPUEUpOwoJU3RyaW5nIG1lc3NhZ2UgPSBudWxsOwoJU3RyaW5n QnVmZmVyIHJlc3VsdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CiAgICAgICAgaWYgKG1lc3NhZ2Vz ICE9IG51bGwpCiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlcy5nZXRNZXNzYWdlKGxvY2Fs ZSwgImVycm9ycy5oZWFkZXIiKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG1lc3NhZ2UgPSBu dWxsOwoJaWYgKG1lc3NhZ2UgIT0gbnVsbCkgewoJICAgIHJlc3VsdHMuYXBwZW5kKG1lc3NhZ2Up OwoJICAgIHJlc3VsdHMuYXBwZW5kKCJcclxuIik7Cgl9CiAgICAgICAgSXRlcmF0b3IgcmVwb3J0 cyA9IGVycm9ycy5nZXQoKTsKICAgICAgICB3aGlsZSAocmVwb3J0cy5oYXNOZXh0KCkpIHsKICAg ICAgICAgICAgQWN0aW9uRXJyb3IgcmVwb3J0ID0gKEFjdGlvbkVycm9yKSByZXBvcnRzLm5leHQo KTsKICAgICAgICAgICAgaWYgKG1lc3NhZ2VzICE9IG51bGwpCiAgICAgICAgICAgICAgICBtZXNz YWdlID0KICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5nZXRNZXNzYWdlKGxvY2FsZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5nZXRLZXkoKSwgcmVw b3J0LmdldFZhbHVlcygpKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbWVzc2Fn ZSA9IG51bGw7CgkgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkgewoJCXJlc3VsdHMuYXBwZW5kKG1l c3NhZ2UpOwoJCXJlc3VsdHMuYXBwZW5kKCJcclxuIik7CgkgICAgfQoJfQogICAgICAgIGlmICht ZXNzYWdlcyAhPSBudWxsKQogICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZXMuZ2V0TWVzc2Fn ZShsb2NhbGUsICJlcnJvcnMuZm9vdGVyIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICBtZXNz YWdlID0gbnVsbDsKCWlmIChtZXNzYWdlICE9IG51bGwpIHsKCSAgICByZXN1bHRzLmFwcGVuZCht ZXNzYWdlKTsKCSAgICByZXN1bHRzLmFwcGVuZCgiXHJcbiIpOwoJfQoKCS8vIFByaW50IHRoZSBy ZXN1bHRzIHRvIG91ciBvdXRwdXQgd3JpdGVyCglKc3BXcml0ZXIgd3JpdGVyID0gcGFnZUNvbnRl eHQuZ2V0T3V0KCk7Cgl0cnkgewoJICAgIHdyaXRlci5wcmludChyZXN1bHRzLnRvU3RyaW5nKCkp OwoJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewoJICAgIHRocm93IG5ldyBKc3BFeGNlcHRpb24o ZS50b1N0cmluZygpKTsKCX0KCgkvLyBDb250aW51ZSBwcm9jZXNzaW5nIHRoaXMgcGFnZQoJcmV0 dXJuIChFVkFMX0JPRFlfSU5DTFVERSk7CgogICAgfQoKCiAgICAvKioKICAgICAqIFJlbGVhc2Ug YW55IGFjcXVpcmVkIHJlc291cmNlcy4KICAgICAqLwogICAgcHVibGljIHZvaWQgcmVsZWFzZSgp IHsKCglzdXBlci5yZWxlYXNlKCk7CgluYW1lID0gQWN0aW9uLkVSUk9SX0tFWTsKCiAgICB9CgoK fQo= ------------FBFE158F395847 Content-Type: application/octet-stream; name="Action.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Action.java" LyoKICogJEhlYWRlcjogL2hvbWUvY3ZzcHVibGljL2pha2FydGEtc3RydXRzL3NyYy9zaGFyZS9v cmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uLmphdmEsdiAxLjcgMjAwMC8xMC8xMiAyMjoz MTozMiBjcmFpZ21jYyBFeHAgJAogKiAkUmV2aXNpb246IDEuNyAkCiAqICREYXRlOiAyMDAwLzEw LzEyIDIyOjMxOjMyICQKICoKICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogVGhlIEFwYWNoZSBTb2Z0d2Fy ZSBMaWNlbnNlLCBWZXJzaW9uIDEuMQogKgogKiBDb3B5cmlnaHQgKGMpIDE5OTkgVGhlIEFwYWNo ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cwogKiByZXNlcnZlZC4KICoKICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu CiAqCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgogKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAqICAgIGRpc3RyaWJ1dGlv bi4KICoKICogMy4gVGhlIGVuZC11c2VyIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgd2l0aCB0aGUg cmVkaXN0cmlidXRpb24sIGlmCiAqICAgIGFueSwgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcg YWNrbm93bGVnZW1lbnQ6CiAqICAgICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IHRoZQogKiAgICAgICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKGh0 dHA6Ly93d3cuYXBhY2hlLm9yZy8pLiIKICogICAgQWx0ZXJuYXRlbHksIHRoaXMgYWNrbm93bGVn ZW1lbnQgbWF5IGFwcGVhciBpbiB0aGUgc29mdHdhcmUgaXRzZWxmLAogKiAgICBpZiBhbmQgd2hl cmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3dsZWdlbWVudHMgbm9ybWFsbHkgYXBwZWFyLgog KgogKiA0LiBUaGUgbmFtZXMgIlRoZSBKYWthcnRhIFByb2plY3QiLCAiVG9tY2F0IiwgYW5kICJB cGFjaGUgU29mdHdhcmUKICogICAgRm91bmRhdGlvbiIgbXVzdCBub3QgYmUgdXNlZCB0byBlbmRv cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAogKiAgICBmcm9tIHRoaXMgc29mdHdhcmUg d2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuCiAqICAgIHBlcm1p c3Npb24sIHBsZWFzZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLgogKgogKiA1LiBQcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiQXBhY2hlIgog KiAgICBub3IgbWF5ICJBcGFjaGUiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9y IHdyaXR0ZW4KICogICAgcGVybWlzc2lvbiBvZiB0aGUgQXBhY2hlIEdyb3VwLgogKgogKiBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBM SUVECiAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTCiAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQVJFCiAqIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJT04gT1IKICogSVRTIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAogKiBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCiAq IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7 IExPU1MgT0YKICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ T04pIEhPV0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKICogT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiAqIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRgogKiBTVUNIIERBTUFHRS4KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogVGhpcyBzb2Z0d2FyZSBj b25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlIGJ5IG1hbnkKICogaW5kaXZp ZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4gIEZvciBt b3JlCiAqIGluZm9ybWF0aW9uIG9uIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiwgcGxl YXNlIHNlZQogKiA8aHR0cDovL3d3dy5hcGFjaGUub3JnLz4uCiAqCiAqLwoKCnBhY2thZ2Ugb3Jn LmFwYWNoZS5zdHJ1dHMuYWN0aW9uOwoKCmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBv cnQgamF2YS51dGlsLkxvY2FsZTsKaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlv bjsKaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldFJlcXVlc3Q7CmltcG9ydCBqYXZheC5zZXJ2 bGV0LlNlcnZsZXRSZXNwb25zZTsKaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2Vydmxl dFJlcXVlc3Q7CmltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsK aW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2Vzc2lvbjsKaW1wb3J0IG9yZy5hcGFjaGUu c3RydXRzLnRhZ2xpYi5Db25zdGFudHM7CmltcG9ydCBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLkVy cm9yTWVzc2FnZXM7CmltcG9ydCBvcmcuYXBhY2hlLnN0cnV0cy51dGlsLk1lc3NhZ2VSZXNvdXJj ZXM7CgoKLyoqCiAqIEFuIDxzdHJvbmc+QWN0aW9uPC9zdHJvbmc+IGlzIGFuIGFkYXB0ZXIgYmV0 d2VlbiB0aGUgY29udGVudHMgb2YgYW4gaW5jb21pbmcKICogSFRUUCByZXF1ZXN0IGFuZCB0aGUg Y29ycmVzcG9uZGluZyBidXNpbmVzcyBsb2dpYyB0aGF0IHNob3VsZCBiZSBleGVjdXRlZCB0bwog KiBwcm9jZXNzIHRoaXMgcmVxdWVzdC4gIFRoZSBjb250cm9sbGVyIChBY3Rpb25TZXJ2bGV0KSB3 aWxsIHNlbGVjdCBhbgogKiBhcHByb3ByaWF0ZSBBY3Rpb24gZm9yIGVhY2ggcmVxdWVzdCwgY3Jl YXRlIGFuIGluc3RhbmNlIChpZiBuZWNlc3NhcnkpLAogKiBhbmQgY2FsbCB0aGUgPGNvZGU+cGVy Zm9ybTwvY29kZT4gbWV0aG9kLgogKiA8cD4KICogQWN0aW9ucyBtdXN0IGJlIHByb2dyYW1tZWQg aW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIsIGJlY2F1c2UgdGhlIGNvbnRyb2xsZXIKICogd2lsbCBz aGFyZSB0aGUgc2FtZSBpbnN0YW5jZSBmb3IgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3Rz LiAgSW4KICogdGhpcyBtZWFucyB5b3Ugc2hvdWxkIGRlc2lnbiB3aXRoIHRoZSBmb2xsb3dpbmcg aXRlbXMgaW4gbWluZDoKICogPHVsPgogKiA8bGk+SW5zdGFuY2UgYW5kIHN0YXRpYyB2YXJpYWJs ZXMgTVVTVCBOT1QgYmUgdXNlZCB0byBzdG9yZSBpbmZvcm1hdGlvbgogKiAgICAgcmVsYXRlZCB0 byB0aGUgc3RhdGUgb2YgYSBwYXJ0aWN1bGFyIHJlcXVlc3QuICBUaGV5IE1BWSBiZSB1c2VkIHRv CiAqICAgICBzaGFyZSBnbG9iYWwgcmVzb3VyY2VzIGFjcm9zcyByZXF1ZXN0cyBmb3IgdGhlIHNh bWUgYWN0aW9uLjwvbGk+CiAqIDxsaT5BY2Nlc3MgdG8gb3RoZXIgcmVzb3VyY2VzIChKYXZhQmVh bnMsIHNlc3Npb24gdmFyaWFibGVzLCBldGMuKSBNVVNUCiAqICAgICBiZSBzeW5jaHJvbml6ZWQg aWYgdGhvc2UgcmVzb3VyY2VzIHJlcXVpcmUgcHJvdGVjdGlvbi4gIChHZW5lcmFsbHksCiAqICAg ICBob3dldmVyLCByZXNvdXJjZSBjbGFzc2VzIHNob3VsZCBiZSBkZXNpZ25lZCB0byBwcm92aWRl IHRoZWlyIG93bgogKiAgICAgcHJvdGVjdGlvbiB3aGVyZSBuZWNlc3NhcnkuPC9saT4KICogPC91 bD4KICogPHA+CiAqIFdoZW4gYW4gPGNvZGU+QWN0aW9uPC9jb2RlPiBpbnN0YW5jZSBpcyBmaXJz dCBjcmVhdGVkLCB0aGUgY29udHJvbGxlcgogKiBzZXJ2bGV0IHdpbGwgY2FsbCA8Y29kZT5zZXRT ZXJ2bGV0KCk8L2NvZGU+IHdpdGggYSBub24tbnVsbCBhcmd1bWVudCB0bwogKiBpZGVudGlmeSB0 aGUgY29udHJvbGxlciBzZXJ2bGV0IGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgQWN0aW9uIGlzIGF0 dGFjaGVkLgogKiBXaGVuIHRoZSBjb250cm9sbGVyIHNlcnZsZXQgaXMgdG8gYmUgc2h1dCBkb3du IChvciByZXN0YXJ0ZWQpLCB0aGUKICogPGNvZGU+c2V0U2VydmxldCgpPC9jb2RlPiBtZXRob2Qg d2lsbCBiZSBjYWxsZWQgd2l0aCBhIDxjb2RlPm51bGw8L2NvZGU+CiAqIGFyZ3VtZW50LCB3aGlj aCBjYW4gYmUgdXNlZCB0byBjbGVhbiB1cCBhbnkgYWxsb2NhdGVkIHJlc291cmNlcyBpbiB1c2UK ICogYnkgdGhpcyBBY3Rpb24uCiAqCiAqIEBhdXRob3IgQ3JhaWcgUi4gTWNDbGFuYWhhbgogKiBA dmVyc2lvbiAkUmV2aXNpb246IDEuNyAkICREYXRlOiAyMDAwLzEwLzEyIDIyOjMxOjMyICQKICov CgpwdWJsaWMgY2xhc3MgQWN0aW9uIHsKCgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTWFuaWZlc3QgQ29uc3RhbnRzCgoKICAgIC8q Kg0KICAgICAqIFRoZSByZXF1ZXN0IGF0dHJpYnV0ZSBrZXkgdW5kZXIgd2hpY2ggeW91ciBhY3Rp b24gc2hvdWxkIHN0b3JlIGFuDQogICAgICogPGNvZGU+QWN0aW9uRXJyb3JzPC9jb2RlPiBpbnN0 YW5jZS4NCiAgICAgKiBCeSBkZWZhdWx0LCA8Y29kZT5BY3Rpb25TZXJ2bGV0LnByb2Nlc3NWYWxp ZGF0ZSgpPC9jb2RlPiB3aWxsIHVwZGF0ZQ0KICAgICAqIHRoZSBhdHRyaWJ1dGUgdmFsdWUgdG8g cmVmbGVjdCBhbnkgdmFsaWRhdGlvbiBlcnJvcnMuDQogICAgICogVGhlIDxjb2RlPiZsdDtmb3Jt OmVycm9ycyZndDs8L2NvZGU+IHRhZyB3aWxsIGFzc3VtZSB0aGF0IG5vIHByb2JsZW1zIG5lZWQg dG8gYmUgDQogICAgICogcmVwb3J0ZWQgaWYgdGhpcyBhdHRyaWJ1dGUgaXMgbWlzc2luZyBvciBl bXB0eSBfYW5kXyB0aGUgbmFtZSBhdHRyaWJ1dGUgDQogICAgICogb2YgdGhlIDxjb2RlPiZsdDtm b3JtOmVycm9ycyZndDs8L2NvZGU+IHRhZyBoYXMgbm90IGJlZW4gdXNlZCB0byBwb2ludCB0byBh IGRpZmZlcmVudA0KICAgICAqIGVycm9ycyBjb2xsZWN0aW9uLg0KICAgICAqIEBzZWUgb3JnLmFw YWNoZS5zdHJ1dHMudGFnbGliLmZvcm0uRXJyb3JzVGFnDQogICAgICogQHNlZSBvcmcuYXBhY2hl LnN0cnV0cy5hY3Rpb24uQWN0aW9uU2VydmxldA0KICAgICAqLw0KICAgIHB1YmxpYyBzdGF0aWMg ZmluYWwgU3RyaW5nIEVSUk9SX0tFWSA9CiAgICAgICJvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24u RVJST1IiOwoKCiAgICAvKioKICAgICAqIFRoZSByZXF1ZXN0IGF0dHJpYnV0ZSBrZXkgdW5kZXIg d2hpY2ggU3RydXRzIGN1c3RvbSB0YWdzIG1pZ2h0IHN0b3JlIGEKICAgICAqIDxjb2RlPlRocm93 YWJsZTwvY29kZT4gdGhhdCBjYXVzZWQgdGhlbSB0byByZXBvcnQgYSBKc3BFeGNlcHRpb24gYXQK ICAgICAqIHJ1bnRpbWUuICBUaGlzIHZhbHVlIGNhbiBiZSB1c2VkIG9uIGFuIGVycm9yIHBhZ2Ug dG8gcHJvdmlkZSBtb3JlCiAgICAgKiBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IHJl YWxseSB3ZW50IHdyb25nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBF WENFUFRJT05fS0VZID0KICAgICAgICAib3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkVYQ0VQVElP TiI7CgoKICAgIC8qKgogICAgICogVGhlIGNvbnRleHQgYXR0cmlidXRlcyBrZXkgdW5kZXIgd2hp Y2ggb3VyIEFjdGlvbkZvcm1CZWFucyBjb2xsZWN0aW9uCiAgICAgKiBhcmUgbm9ybWFsbHkgc3Rv cmVkLCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKICAgICAqIEFjdGlv blNlcnZsZXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPUk1fQkVB TlNfS0VZID0KICAgICAgICAib3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkZPUk1fQkVBTlMiOwoK CiAgICAvKioKICAgICAqIFRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91 ciBBY3Rpb25Gb3J3YXJkcyBjb2xsZWN0aW9uCiAgICAgKiBhcmUgbm9ybWFsbHkgc3RvcmVkLCB1 bmxlc3Mgb3ZlcnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKICAgICAqIEFjdGlvblNlcnZs ZXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPUldBUkRTX0tFWSA9 CiAgICAgICJvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uRk9SV0FSRFMiOwoKCiAgICAvKioKICAg ICAqIFRoZSBzZXNzaW9uIGF0dHJpYnV0ZSBrZXkgdW5kZXIgd2hpY2ggdGhlIHVzZXIncyBzZWxl Y3RlZCBMb2NhbGUgaXMKICAgICAqIHN0b3JlZCwgaWYgYW55LiAgSWYgbm8gc3VjaCBhdHRyaWJ1 dGUgaXMgZm91bmQsIHRoZSBzeXN0ZW0gZGVmYXVsdCBsb2NhbGUKICAgICAqIHdpbGwgYmUgdXNl ZCB3aGVuIHJldHJpZXZpbmcgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMuICBJZiB1c2VkLCB0 aGlzCiAgICAgKiBhdHRyaWJ1dGUgaXMgdHlwaWNhbGx5IHNldCBkdXJpbmcgdXNlciBsb2dpbiBw cm9jZXNzaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NBTEVf S0VZID0KICAgICAgIm9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5MT0NBTEUiOwoKCiAgICAvKioK ICAgICAqIFRoZSBjb250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91ciBBY3Rpb25N YXBwaW5ncyBjb2xsZWN0aW9uCiAgICAgKiBhcmUgbm9ybWFsbHkgc3RvcmVkLCB1bmxlc3Mgb3Zl cnJpZGRlbiB3aGVuIGluaXRpYWxpemluZyBvdXIKICAgICAqIEFjdGlvblNlcnZsZXQuCiAgICAg Ki8KICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1BUFBJTkdTX0tFWSA9CiAgICAgICJv cmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uTUFQUElOR1MiOwoKCiAgICAvKioKICAgICAqIFRoZSBj b250ZXh0IGF0dHJpYnV0ZXMga2V5IHVuZGVyIHdoaWNoIG91ciBhcHBsaWNhdGlvbiByZXNvdXJj ZXMgYXJlCiAgICAgKiBub3JtYWxseSBzdG9yZWQsIHVubGVzcyBvdmVycmlkZGVuIHdoZW4gaW5p dGlhbGl6aW5nIG91ciBBY3Rpb25TZXJ2bGV0LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZp bmFsIFN0cmluZyBNRVNTQUdFU19LRVkgPQogICAgICAib3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9u Lk1FU1NBR0UiOwoKCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBJbnN0YW5jZSBWYXJpYWJsZXMKCgogICAgLyoqCiAgICAgKiBUaGUg c3lzdGVtIGRlZmF1bHQgTG9jYWxlLgogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIExvY2Fs ZSBkZWZhdWx0TG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKCgogICAgLyoqCiAgICAgKiBU aGUgY29udHJvbGxlciBzZXJ2bGV0IHRvIHdoaWNoIHdlIGFyZSBhdHRhY2hlZC4KICAgICAqLwog ICAgcHJvdGVjdGVkIEFjdGlvblNlcnZsZXQgc2VydmxldCA9IG51bGw7CgoKICAgIC8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g UHJvcGVydGllcwoKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgY29udHJvbGxlciBzZXJ2bGV0 IGluc3RhbmNlIHRvIHdoaWNoIHdlIGFyZSBhdHRhY2hlZC4KICAgICAqLwogICAgcHVibGljIEFj dGlvblNlcnZsZXQgZ2V0U2VydmxldCgpIHsKCiAgICAgICAgcmV0dXJuICh0aGlzLnNlcnZsZXQp OwoKICAgIH0KCgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGNvbnRyb2xsZXIgc2VydmxldCBpbnN0 YW5jZSB0byB3aGljaCB3ZSBhcmUgYXR0YWNoZWQgKGlmCiAgICAgKiA8Y29kZT5zZXJ2bGV0PC9j b2RlPiBpcyBub24tbnVsbCksIG9yIHJlbGVhc2UgYW55IGFsbG9jYXRlZCByZXNvdXJjZXMKICAg ICAqIChpZiA8Y29kZT5zZXJ2bGV0PC9jb2RlPiBpcyBudWxsKS4KICAgICAqCiAgICAgKiBAcGFy YW0gc2VydmxldCBUaGUgbmV3IGNvbnRyb2xsZXIgc2VydmxldCwgaWYgYW55CiAgICAgKi8KICAg IHB1YmxpYyB2b2lkIHNldFNlcnZsZXQoQWN0aW9uU2VydmxldCBzZXJ2bGV0KSB7CgogICAgICAg IHRoaXMuc2VydmxldCA9IHNlcnZsZXQ7CgogICAgfQoKCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHMK CgogICAgLyoqCiAgICAgKiBQcm9jZXNzIHRoZSBzcGVjaWZpZWQgbm9uLUhUVFAgcmVxdWVzdCwg YW5kIGNyZWF0ZSB0aGUgY29ycmVzcG9uZGluZwogICAgICogbm9uLUhUVFAgcmVzcG9uc2UgKG9y IGZvcndhcmQgdG8gYW5vdGhlciB3ZWIgY29tcG9uZW50IHRoYXQgd2lsbCBjcmVhdGUKICAgICAq IGl0KS4gIFJldHVybiBhbiA8Y29kZT5BY3Rpb25Gb3J3YXJkPC9jb2RlPiBpbnN0YW5jZSBkZXNj cmliaW5nIHdoZXJlCiAgICAgKiBhbmQgaG93IGNvbnRyb2wgc2hvdWxkIGJlIGZvcndhcmRlZCwg b3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlCiAgICAgKiByZXNwb25zZSBoYXMgYWxyZWFkeSBi ZWVuIGNvbXBsZXRlZC4KICAgICAqIDxwPgogICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp b24gYXR0ZW1wdHMgdG8gZm9yd2FyZCB0byB0aGUgSFRUUCB2ZXJzaW9uIG9mCiAgICAgKiB0aGlz IG1ldGhvZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWFwcGluZyBUaGUgQWN0aW9uTWFwcGluZyB1 c2VkIHRvIHNlbGVjdCB0aGlzIGluc3RhbmNlCiAgICAgKiBAcGFyYW0gYWN0aW9uRm9ybSBUaGUg b3B0aW9uYWwgQWN0aW9uRm9ybSBiZWFuIGZvciB0aGlzIHJlcXVlc3QgKGlmIGFueSkKICAgICAq IEBwYXJhbSByZXF1ZXN0IFRoZSBub24tSFRUUCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nCiAg ICAgKiBAcGFyYW0gcmVzcG9uc2UgVGhlIG5vbi1IVFRQIHJlc3BvbnNlIHdlIGFyZSBjcmVhdGlu ZwogICAgICoKICAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gaWYgYW4gaW5wdXQvb3V0cHV0 IGVycm9yIG9jY3VycwogICAgICogQGV4Y2VwdGlvbiBTZXJ2bGV0RXhjZXB0aW9uIGlmIGEgc2Vy dmxldCBleGNlcHRpb24gb2NjdXJzCiAgICAgKi8KICAgIHB1YmxpYyBBY3Rpb25Gb3J3YXJkIHBl cmZvcm0oQWN0aW9uTWFwcGluZyBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBY3Rpb25Gb3JtIGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl cnZsZXRSZXF1ZXN0IHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl cnZsZXRSZXNwb25zZSByZXNwb25zZSkKICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIFNlcnZs ZXRFeGNlcHRpb24gewoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gKHBlcmZvcm0o bWFwcGluZywgZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChIdHRwU2VydmxldFJl cXVlc3QpIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSHR0cFNlcnZsZXRS ZXNwb25zZSkgcmVzcG9uc2UpKTsKICAgICAgICB9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24g ZSkgewogICAgICAgICAgICByZXR1cm4gKG51bGwpOwogICAgICAgIH0KCiAgICB9CgoKICAgIC8q KgogICAgICogUHJvY2VzcyB0aGUgc3BlY2lmaWVkIEhUVFAgcmVxdWVzdCwgYW5kIGNyZWF0ZSB0 aGUgY29ycmVzcG9uZGluZyBIVFRQCiAgICAgKiByZXNwb25zZSAob3IgZm9yd2FyZCB0byBhbm90 aGVyIHdlYiBjb21wb25lbnQgdGhhdCB3aWxsIGNyZWF0ZSBpdCkuCiAgICAgKiBSZXR1cm4gYW4g PGNvZGU+QWN0aW9uRm9yd2FyZDwvY29kZT4gaW5zdGFuY2UgZGVzY3JpYmluZyB3aGVyZSBhbmQg aG93CiAgICAgKiBjb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQsIG9yIDxjb2RlPm51bGw8L2Nv ZGU+IGlmIHRoZSByZXNwb25zZSBoYXMKICAgICAqIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQuCiAg ICAgKgogICAgICogQHBhcmFtIG1hcHBpbmcgVGhlIEFjdGlvbk1hcHBpbmcgdXNlZCB0byBzZWxl Y3QgdGhpcyBpbnN0YW5jZQogICAgICogQHBhcmFtIGFjdGlvbkZvcm0gVGhlIG9wdGlvbmFsIEFj dGlvbkZvcm0gYmVhbiBmb3IgdGhpcyByZXF1ZXN0IChpZiBhbnkpCiAgICAgKiBAcGFyYW0gcmVx dWVzdCBUaGUgSFRUUCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nCiAgICAgKiBAcGFyYW0gcmVz cG9uc2UgVGhlIEhUVFAgcmVzcG9uc2Ugd2UgYXJlIGNyZWF0aW5nCiAgICAgKgogICAgICogQGV4 Y2VwdGlvbiBJT0V4Y2VwdGlvbiBpZiBhbiBpbnB1dC9vdXRwdXQgZXJyb3Igb2NjdXJzCiAgICAg KiBAZXhjZXB0aW9uIFNlcnZsZXRFeGNlcHRpb24gaWYgYSBzZXJ2bGV0IGV4Y2VwdGlvbiBvY2N1 cnMKICAgICAqLwogICAgcHVibGljIEFjdGlvbkZvcndhcmQgcGVyZm9ybShBY3Rpb25NYXBwaW5n IG1hcHBpbmcsCgkJCQkgQWN0aW9uRm9ybSBmb3JtLAoJCQkJIEh0dHBTZXJ2bGV0UmVxdWVzdCBy ZXF1ZXN0LAoJCQkJIEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpCgl0aHJvd3MgSU9FeGNl cHRpb24sIFNlcnZsZXRFeGNlcHRpb24gewoKICAgICAgICByZXR1cm4gKG51bGwpOyAgLy8gT3Zl cnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBmdW5jdGlvbmFsaXR5CgogICAgfQoKCiAgICAv LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBy b3RlY3RlZCBNZXRob2RzCgoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSB1c2VyJ3MgY3VycmVu dGx5IHNlbGVjdGVkIExvY2FsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVx dWVzdCB3ZSBhcmUgcHJvY2Vzc2luZwogICAgICovCiAgICBwcm90ZWN0ZWQgTG9jYWxlIGdldExv Y2FsZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkgewoKCUh0dHBTZXNzaW9uIHNlc3Npb24g PSByZXF1ZXN0LmdldFNlc3Npb24oKTsKCUxvY2FsZSBsb2NhbGUgPSAoTG9jYWxlKSBzZXNzaW9u LmdldEF0dHJpYnV0ZShMT0NBTEVfS0VZKTsKCWlmIChsb2NhbGUgPT0gbnVsbCkKCSAgICBsb2Nh bGUgPSBkZWZhdWx0TG9jYWxlOwoJcmV0dXJuIChsb2NhbGUpOwoKICAgIH0KCgogICAgLyoqCiAg ICAgKiBTZXQgdGhlIHVzZXIncyBjdXJyZW50bHkgc2VsZWN0ZWQgTG9jYWxlLgogICAgICoKICAg ICAqIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5nCiAgICAgKiBA cGFyYW0gbG9jYWxlIFRoZSB1c2VyJ3Mgc2VsZWN0ZWQgTG9jYWxlIHRvIGJlIHNldCwgb3IgbnVs bAogICAgICogIHRvIHNlbGVjdCB0aGUgc2VydmVyJ3MgZGVmYXVsdCBMb2NhbGUKICAgICAqLwog ICAgcHJvdGVjdGVkIHZvaWQgc2V0TG9jYWxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBM b2NhbGUgbG9jYWxlKSB7CgoJSHR0cFNlc3Npb24gc2Vzc2lvbiA9IHJlcXVlc3QuZ2V0U2Vzc2lv bigpOwoJaWYgKGxvY2FsZSA9PSBudWxsKQoJICAgIGxvY2FsZSA9IGRlZmF1bHRMb2NhbGU7Cglz ZXNzaW9uLnNldEF0dHJpYnV0ZShMT0NBTEVfS0VZLCBsb2NhbGUpOwoKICAgIH0KCgogICAgLyoq CiAgICAgKiBSZXR1cm4gdGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGZvciB0aGlzIGFwcGxpY2F0aW9u LgogICAgICovCiAgICBwcm90ZWN0ZWQgTWVzc2FnZVJlc291cmNlcyBnZXRSZXNvdXJjZXMoKSB7 CgoJcmV0dXJuIChzZXJ2bGV0LmdldFJlc291cmNlcygpKTsKCiAgICB9CgoKICAgIC8qKgogICAg ICogUmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZm9ybSBjYW5jZWwgYnV0dG9uIHdh cyBwcmVzc2VkLgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBjaGVjayBpZiB0aGUgY2FuY2VsIGJ1 dHRvbiBnZW5lcmF0ZWQgYnkKICAgICAqIDxzdHJvbmc+Q2FuY2VsVGFnPC9zdHJvbmc+IHdhcyBw cmVzc2VkIGJ5IHRoZSB1c2VyIGluIHRoZQogICAgICogY3VycmVudCByZXF1ZXN0LiAgSWYgdHJ1 ZSwgdmFsaWRhdGlvbiBieSBhbnkKICAgICAqIDxzdHJvbmc+VmFsaWRhdGluZ0FjdGlvbkZvcm08 L3N0cm9uZz4gdmFsaWRhdGUoKSBtZXRob2Qgd2lsbCBiZQogICAgICogc2tpcHBlZC4KICAgICAq CiAgICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNz aW5nCiAgICAgKiBAc2VlIG9yZy5hcGFjaGUuc3RydXRzLnRhZ2xpYi5DYW5jZWxUYWcKICAgICAq IEBzZWUgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLlZhbGlkYXRpbmdBY3Rpb25Gb3JtCiAgICAg Ki8KICAgIHByb3RlY3RlZCBib29sZWFuIGlzQ2FuY2VsbGVkKEh0dHBTZXJ2bGV0UmVxdWVzdCBy ZXF1ZXN0KSB7CgoJcmV0dXJuIChyZXF1ZXN0LmdldFBhcmFtZXRlcihDb25zdGFudHMuQ0FOQ0VM X1BST1BFUlRZKSAhPSBudWxsKTsKCiAgICB9CgoKICAgIC8qKgogICAgICogU2F2ZSB0aGUgc3Bl Y2lmaWVkIGVycm9yIG1lc3NhZ2VzIGtleXMgaW50byB0aGUgYXBwcm9wcmlhdGUgcmVxdWVzdAog ICAgICogYXR0cmlidXRlIGZvciB1c2UgYnkgdGhlICZsdDtmb3JtOmVycm9ycyZndDsgdGFnLCBp ZiBhbnkgbWVzc2FnZXMKICAgICAqIGFyZSByZXF1aXJlZC4gIE90aGVyd2lzZSwgZW5zdXJlIHRo YXQgdGhlIHJlcXVlc3QgYXR0cmlidXRlIGlzIG5vdAogICAgICogY3JlYXRlZC4KICAgICAqCiAg ICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgc2VydmxldCByZXF1ZXN0IHdlIGFyZSBwcm9jZXNzaW5n CiAgICAgKiBAcGFyYW0gZXJyb3JzIEVycm9yIG1lc3NhZ2VzIG9iamVjdAogICAgICovCiAgICBw cm90ZWN0ZWQgdm9pZCBzYXZlRXJyb3JzKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LAoJCQkg ICAgICBBY3Rpb25FcnJvcnMgZXJyb3JzKSB7CgoJLy8gUmVtb3ZlIGFueSBlcnJvciBtZXNzYWdl cyBhdHRyaWJ1dGUgaWYgbm9uZSBhcmUgcmVxdWlyZWQKCWlmICgoZXJyb3JzID09IG51bGwpIHx8 IGVycm9ycy5lbXB0eSgpKSB7CgkgICAgcmVxdWVzdC5yZW1vdmVBdHRyaWJ1dGUoRVJST1JfS0VZ KTsKCSAgICByZXR1cm47Cgl9CgoJLy8gU2F2ZSB0aGUgZXJyb3IgbWVzc2FnZXMgd2UgbmVlZAoJ cmVxdWVzdC5zZXRBdHRyaWJ1dGUoRVJST1JfS0VZLCBlcnJvcnMpOwoKICAgIH0KCgp9Cg== ------------FBFE158F395847--