Return-Path: Delivered-To: apmail-xml-cocoon-dev-archive@xml.apache.org Received: (qmail 23063 invoked by uid 500); 17 Feb 2002 00:05:39 -0000 Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: cocoon-dev@xml.apache.org Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 23052 invoked from network); 17 Feb 2002 00:05:38 -0000 Date: Sun, 17 Feb 2002 01:05:28 +0100 (CET) From: Stephan Michels To: Subject: FragmentExtractor Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463778750-1371738547-1013904328=:621" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ---1463778750-1371738547-1013904328=:621 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, I try to redesign the fragmentextractor like the TODO list describes. The problem, which I have, is that fragmentexractorgenerator doesn't find the attributes in the session. The next problem is, that a "Out of time" exception occures instead of a SAXException, if the generator doesn't find the attribute. Redesign FragmentExtractorGenerator/Transformer so that it works on a clustered server : store fragments in the session rather than in a local store.
Additionnaly, store the fragments using the XMLCompiler instead of building a DOM.
Can anyone help me? Thanx, Stephan Michels. ---1463778750-1371738547-1013904328=:621 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="FragmentExtractorTransformer.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="FragmentExtractorTransformer.java" LyoNCiAqIFRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAx LjENCiAqDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDAxIFRoZSBBcGFjaGUg U29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMNCiAqIHJlc2VydmVk Lg0KICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zDQogKiBhcmUgbWV0Og0KICoNCiAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKg0KICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bg0KICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KICogICAgZGlzdHJpYnV0aW9uLg0K ICoNCiAqIDMuIFRoZSBlbmQtdXNlciBkb2N1bWVudGF0aW9uIGluY2x1ZGVk IHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLA0KICogICAgaWYgYW55LCBtdXN0 IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoNCiAqICAg ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZQ0KICogICAgICAgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u IChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4iDQogKiAgICBBbHRlcm5hdGVs eSwgdGhpcyBhY2tub3dsZWRnbWVudCBtYXkgYXBwZWFyIGluIHRoZSBzb2Z0 d2FyZSBpdHNlbGYsDQogKiAgICBpZiBhbmQgd2hlcmV2ZXIgc3VjaCB0aGly ZC1wYXJ0eSBhY2tub3dsZWRnbWVudHMgbm9ybWFsbHkgYXBwZWFyLg0KICoN CiAqIDQuIFRoZSBuYW1lcyAiQXBhY2hlIENvY29vbiIgYW5kICJBcGFjaGUg U29mdHdhcmUgRm91bmRhdGlvbiIgbXVzdA0KICogICAgbm90IGJlIHVzZWQg dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzDQogKiAgICBzb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4gRm9yIHdyaXR0ZW4NCiAqICAgIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLg0KICoNCiAqIDUuIFByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJBcGFjaGUiLA0KICogICAgbm9yIG1heSAiQXBhY2hlIiBhcHBlYXIg aW4gdGhlaXIgbmFtZSwgd2l0aG91dCBwcmlvciB3cml0dGVuDQogKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4N CiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBB TkQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVEDQogKiBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUw0KICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCiAqIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJ T04gT1INCiAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCiAqIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVCBOT1QNCiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YNCiAqIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRCBBTkQNCiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLA0KICog T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkgT1VUDQogKiBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YNCiAqIFNVQ0ggREFNQUdFLg0KICogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCiAqDQogKiBUaGlzIHNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFy eSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueQ0KICogaW5kaXZpZHVhbHMg b24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4g IEZvciBtb3JlDQogKiBpbmZvcm1hdGlvbiBvbiB0aGUgQXBhY2hlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIHBsZWFzZSBzZWUNCiAqIDxodHRwOi8vd3d3LmFw YWNoZS5vcmcvPi4NCiAqLw0KcGFja2FnZSBvcmcuYXBhY2hlLmNvY29vbi50 cmFuc2Zvcm1hdGlvbjsNCg0KaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZy YW1ld29yay5hY3Rpdml0eS5EaXNwb3NhYmxlOw0KaW1wb3J0IG9yZy5hcGFj aGUuYXZhbG9uLmZyYW1ld29yay5jb21wb25lbnQuQ29tcG9uZW50RXhjZXB0 aW9uOw0KaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5jb21w b25lbnQuQ29tcG9uZW50TWFuYWdlcjsNCmltcG9ydCBvcmcuYXBhY2hlLmF2 YWxvbi5mcmFtZXdvcmsuY29tcG9uZW50LkNvbXBvc2FibGU7DQppbXBvcnQg b3JnLmFwYWNoZS5hdmFsb24uZnJhbWV3b3JrLmNvbmZpZ3VyYXRpb24uQ29u ZmlndXJhYmxlOw0KaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29y ay5jb25maWd1cmF0aW9uLkNvbmZpZ3VyYXRpb247DQppbXBvcnQgb3JnLmFw YWNoZS5hdmFsb24uZnJhbWV3b3JrLmNvbmZpZ3VyYXRpb24uQ29uZmlndXJh dGlvbkV4Y2VwdGlvbjsNCmltcG9ydCBvcmcuYXBhY2hlLmF2YWxvbi5mcmFt ZXdvcmsucGFyYW1ldGVycy5QYXJhbWV0ZXJzOw0KDQppbXBvcnQgb3JnLmFw YWNoZS5jb2Nvb24uUHJvY2Vzc2luZ0V4Y2VwdGlvbjsNCmltcG9ydCBvcmcu YXBhY2hlLmNvY29vbi5jYWNoaW5nLkNhY2hlVmFsaWRpdHk7DQppbXBvcnQg b3JnLmFwYWNoZS5jb2Nvb24uY2FjaGluZy5DYWNoZWFibGU7DQppbXBvcnQg b3JnLmFwYWNoZS5jb2Nvb24uY2FjaGluZy5OT1BDYWNoZVZhbGlkaXR5Ow0K aW1wb3J0IG9yZy5hcGFjaGUuY29jb29uLmNvbXBvbmVudHMuc2F4LlhNTFNl cmlhbGl6ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24uZW52aXJvbm1l bnQuT2JqZWN0TW9kZWxIZWxwZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nv b24uZW52aXJvbm1lbnQuUmVxdWVzdDsNCmltcG9ydCBvcmcuYXBhY2hlLmNv Y29vbi5lbnZpcm9ubWVudC5TZXNzaW9uOw0KaW1wb3J0IG9yZy5hcGFjaGUu Y29jb29uLmVudmlyb25tZW50LlNvdXJjZVJlc29sdmVyOw0KaW1wb3J0IG9y Zy5hcGFjaGUuY29jb29uLmdlbmVyYXRpb24uRnJhZ21lbnRFeHRyYWN0b3JH ZW5lcmF0b3IyOw0KDQppbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7DQpp bXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsNCmltcG9ydCBvcmcueG1s LnNheC5TQVhFeGNlcHRpb247DQppbXBvcnQgb3JnLnhtbC5zYXguaGVscGVy cy5BdHRyaWJ1dGVzSW1wbDsNCg0KaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRp b247DQppbXBvcnQgamF2YS5ybWkuc2VydmVyLlVJRDsNCmltcG9ydCBqYXZh LnV0aWwuSGFzaE1hcDsNCmltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQpp bXBvcnQgamF2YS51dGlsLk1hcDsNCg0KDQovKioNCiAqIFRoZSB0cmFuc2Zv cm1hdGlvbiBoYWxmIG9mIHRoZSBGcmFnbWVudEV4dHJhY3Rvci4NCiAqIFRo aXMgdHJhbnNmb3JtZXIgc2lldmVzIGFuIGluY29taW5nIHN0cmVhbSBvZiB4 bWwNCiAqIGFuZCByZXBsYWNlcyBmcmFnbWVudHMgd2l0aCBhbiB4bGluayBs b2NhdG9yIHBvaW50aW5nIHRvIHRoZSBmcmFnbWVudHMuDQogKiA8cD4NCiAq IFRoZSBleHRyYWN0ZWQgZnJhZ21lbnRzIGFyZSBpZGVuZGlmaWVkIGJ5IHRo ZWlyIGVsZW1lbnQgbmFtZSBhbmQgbmFtZXNwYWNlIFVSSS4NCiAqIFRoZSBk ZWZhdWx0IGlzIHRvIGV4dHJhY3QgU1ZHIGltYWdlcyAoInN2ZyIgZWxlbWVu dHMgaW4gbmFtZXNwYWNlDQogKiAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z dmciKSwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRlbiBpbiB0aGUgY29uZmln dXJhdGlvbjoNCiAqIDxwcmU+DQogKiAgICZsdDtleHRyYWN0LXVyaSZndDto dHRwOi8vbXkvbmFtZXNwYWNlL3VyaSZsdDsvZXh0cmFjdC11cmkmZ3Q7DQog KiAgICZsdDtleHRyYWN0LWVsZW1lbnQmZ3Q7bXktZWxlbWVudCZsdDsvZXh0 cmFjdC1lbGVtZW50Jmd0Ow0KICogPC9wcmU+DQogKiA8cD4NCiAqIDxiPjxl bT5XYXJuaW5nPC9lbT4gOiBzaW5jZSBmcmFnbWVudHMgYXJlIHN0b3JlZCBs b2NhbGx5IGluIHRoZSBjbGFzcywgdGhpcyB0cmFuc2Zvcm1lcg0KICogYW5k IHRoZSBhc3NvY2lhdGVkIGdlbmVyYXRvciBhcmUgdmVyeSBsaWtlbHkgdG8g ZmFpbCBvbiBhIGNsdXN0ZXJlZCBzZXJ2ZXIuPC9iPg0KICoNCiAqIEBhdXRo b3IgPGEgaHJlZj0ibWFpbHRvOnBhdWxAbHVtaW5hcy5jby51ayI+UGF1bCBS dXNzZWxsPC9hPg0KICogQHZlcnNpb24gQ1ZTICRJZDogRnJhZ21lbnRFeHRy YWN0b3JUcmFuc2Zvcm1lci5qYXZhLHYgMS4xMiAyMDAyLzAyLzE0IDA4OjUy OjQ1IGN6aWVnZWxlciBFeHAgJA0KICovDQpwdWJsaWMgY2xhc3MgRnJhZ21l bnRFeHRyYWN0b3JUcmFuc2Zvcm1lciBleHRlbmRzIEFic3RyYWN0VHJhbnNm b3JtZXINCiAgICBpbXBsZW1lbnRzIENhY2hlYWJsZSwgQ29uZmlndXJhYmxl LCBDb21wb3NhYmxlLCBEaXNwb3NhYmxlIHsNCg0KICAgIHByaXZhdGUgc3Rh dGljIGZpbmFsIFN0cmluZyBFWFRSQUNUX1VSSV9OQU1FID0gImV4dHJhY3Qt dXJpIjsNCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhUUkFD VF9FTEVNRU5UX05BTUUgPSAiZXh0cmFjdC1lbGVtZW50IjsNCg0KICAgIHBy aXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQUNUX1VSSSA9ICJodHRw Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7DQogICAgcHJpdmF0ZSBzdGF0aWMg ZmluYWwgU3RyaW5nIEVYVFJBQ1RfRUxFTUVOVCA9ICJzdmciOw0KDQogICAg cHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZFX1VSSSA9ICJodHRwOi8v YXBhY2hlLm9yZy9jb2Nvb24vZnJhZ21lbnRleHRyYWN0b3IvMi4wIjsNCiAg ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgWExJTktfVVJJID0gImh0 dHA6Ly93d3cudzNjLm9yZy8xOTk5L3hsaW5rIjsNCg0KICAgIHByaXZhdGUg U3RyaW5nIGV4dHJhY3RVUkk7DQogICAgcHJpdmF0ZSBTdHJpbmcgZXh0cmFj dEVsZW1lbnQ7DQoNCiAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2VuZXJh dG9yQ2xhc3MgPSAib3JnLmFwYWNoZS5jb2Nvb24uZ2VuZXJhdGlvbi5GcmFn bWVudEV4dHJhY3RvckdlbmVyYXRvciI7DQoNCiAgICAvKiogVGhlIGNvbXBv bmVudCBtYW5hZ2VyIGluc3RhbmNlICovDQogICAgcHJvdGVjdGVkIENvbXBv bmVudE1hbmFnZXIgbWFuYWdlciA9IG51bGw7DQoNCiAgICBwcml2YXRlIFhN TFNlcmlhbGl6ZXIgc2VyaWFsaXplcjsNCg0KICAgIHByaXZhdGUgTWFwIHBy ZWZpeE1hcDsNCg0KICAgIHByaXZhdGUgaW50IGV4dHJhY3RMZXZlbDsNCg0K ICAgIC8vcHJpdmF0ZSBpbnQgZnJhZ21lbnRJRDsNCg0KICAgIHByaXZhdGUg U2Vzc2lvbiBzZXNzaW9uOw0KICAgIHByaXZhdGUgYm9vbGVhbiBzZXNzaW9u QXZhaWxhYmxlID0gZmFsc2U7DQoNCiAgICAvKioNCiAgICAgKiBDb25maWd1 cmUgdGhpcyB0cmFuc2Zvcm1lci4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9p ZCBjb25maWd1cmUoQ29uZmlndXJhdGlvbiBjb25mKSB0aHJvd3MgQ29uZmln dXJhdGlvbkV4Y2VwdGlvbiB7DQogICAgICAgIGlmIChjb25mICE9IG51bGwp IHsNCiAgICAgICAgICAgIHRoaXMuZXh0cmFjdFVSSSA9IGNvbmYuZ2V0Q2hp bGQoRVhUUkFDVF9VUklfTkFNRSkuZ2V0VmFsdWUoRVhUUkFDVF9VUkkpOw0K ICAgICAgICAgICAgdGhpcy5leHRyYWN0RWxlbWVudCA9IGNvbmYuZ2V0Q2hp bGQoRVhUUkFDVF9FTEVNRU5UX05BTUUpLmdldFZhbHVlKEVYVFJBQ1RfRUxF TUVOVCk7DQogICAgICAgICAgICBpZiAoZ2V0TG9nZ2VyKCkuaXNEZWJ1Z0Vu YWJsZWQoKSkgew0KICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLmRlYnVn KCJFeHRyYWN0aW9uIFVSSSBpcyAiICsgdGhpcy5leHRyYWN0VVJJKTsNCiAg ICAgICAgICAgICAgICBnZXRMb2dnZXIoKS5kZWJ1ZygiRXh0cmFjdGlvbiBl bGVtZW50IGlzICIgKyB0aGlzLmV4dHJhY3RFbGVtZW50KTsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKiBTZXR1cCB0aGUg dHJhbnNmb3JtZXIuICovDQogICAgcHVibGljIHZvaWQgc2V0dXAoU291cmNl UmVzb2x2ZXIgcmVzb2x2ZXIsIE1hcCBvYmplY3RNb2RlbCwgU3RyaW5nIHNy YywgUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQ0KICAgICAgICAgICAgdGhyb3dz IFByb2Nlc3NpbmdFeGNlcHRpb24sIFNBWEV4Y2VwdGlvbiwgSU9FeGNlcHRp b24gew0KICAgICAgICBleHRyYWN0TGV2ZWwgPSAwOw0KICAgICAgICBwcmVm aXhNYXAgPSBuZXcgSGFzaE1hcCgpOw0KDQogICAgICAgIFJlcXVlc3QgcmVx dWVzdCA9IE9iamVjdE1vZGVsSGVscGVyLmdldFJlcXVlc3Qob2JqZWN0TW9k ZWwpOw0KICAgICAgICB0aGlzLnNlc3Npb24gPSByZXF1ZXN0LmdldFNlc3Np b24oZmFsc2UpOw0KICAgICAgICBpZiAoc2Vzc2lvbiA9PSBudWxsKSB7DQog ICAgICAgICAgICBzZXNzaW9uQXZhaWxhYmxlID0gZmFsc2U7DQogICAgICAg ICAgICBnZXRMb2dnZXIoKS5lcnJvcigiRnJhZ21lbnRFeHRyYWN0b3JUcmFu c2Zvcm1lcjogbm8gc2Vzc2lvbiBvYmplY3QiKTsNCiAgICAgICAgfQ0KICAg ICAgICBlbHNlDQogICAgICAgICAgc2Vzc2lvbkF2YWlsYWJsZSA9IHRydWU7 DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2V0IHRoZSBjdXJyZW50IDxj b2RlPkNvbXBvbmVudE1hbmFnZXI8L2NvZGU+IGluc3RhbmNlIHVzZWQgYnkg dGhpcw0KICAgICAqIDxjb2RlPkNvbXBvc2FibGU8L2NvZGU+Lg0KICAgICAq Lw0KICAgIHB1YmxpYyB2b2lkIGNvbXBvc2UoQ29tcG9uZW50TWFuYWdlciBt YW5hZ2VyKSB0aHJvd3MgQ29tcG9uZW50RXhjZXB0aW9uIHsNCiAgICAgICAg dGhpcy5tYW5hZ2VyID0gbWFuYWdlcjsNCiAgICB9DQoNCiAgICAvKioNCiAg ICAgKiBSZWxlYXNlIGFsbCByZXNvdXJjZXMuDQogICAgICovDQogICAgcHVi bGljIHZvaWQgZGlzcG9zZSgpIHsNCiAgICAgICAgdGhpcy5tYW5hZ2VyID0g bnVsbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBHZW5lcmF0ZSB0aGUg dW5pcXVlIGtleS4NCiAgICAgKiBUaGlzIGtleSBtdXN0IGJlIHVuaXF1ZSBp bnNpZGUgdGhlIHNwYWNlIG9mIHRoaXMgY29tcG9uZW50Lg0KICAgICAqDQog ICAgICogQHJldHVybiBUaGUgZ2VuZXJhdGVkIGtleSBoYXNoZXMgdGhlIHNy Yw0KICAgICAqLw0KICAgIHB1YmxpYyBsb25nIGdlbmVyYXRlS2V5KCkgew0K ICAgICAgICByZXR1cm4gMTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBH ZW5lcmF0ZSB0aGUgdmFsaWRpdHkgb2JqZWN0Lg0KICAgICAqDQogICAgICog QHJldHVybiBUaGUgZ2VuZXJhdGVkIHZhbGlkaXR5IG9iamVjdCBvciA8Y29k ZT5udWxsPC9jb2RlPiBpZiB0aGUNCiAgICAgKiAgICAgICAgIGNvbXBvbmVu dCBpcyBjdXJyZW50bHkgbm90IGNhY2hlYWJsZS4NCiAgICAgKi8NCiAgICBw dWJsaWMgQ2FjaGVWYWxpZGl0eSBnZW5lcmF0ZVZhbGlkaXR5KCkgew0KICAg ICAgICByZXR1cm4gTk9QQ2FjaGVWYWxpZGl0eS5DQUNIRV9WQUxJRElUWTsN CiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZWNlaXZlIG5vdGlmaWNhdGlv biBvZiB0aGUgYmVnaW5uaW5nIG9mIGEgZG9jdW1lbnQuDQogICAgICovDQog ICAgcHVibGljIHZvaWQgc3RhcnREb2N1bWVudCgpIHRocm93cyBTQVhFeGNl cHRpb24gew0KICAgICAgICBzdXBlci5zdGFydERvY3VtZW50KCk7DQogICAg fQ0KDQogICAgLyoqDQogICAgICogUmVjZWl2ZSBub3RpZmljYXRpb24gb2Yg dGhlIGVuZCBvZiBhIGRvY3VtZW50Lg0KICAgICAqLw0KICAgIHB1YmxpYyB2 b2lkIGVuZERvY3VtZW50KCkgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogICAg ICAgIHN1cGVyLmVuZERvY3VtZW50KCk7DQogICAgfQ0KDQogICAgLyoqDQog ICAgICogQmVnaW4gdGhlIHNjb3BlIG9mIGEgcHJlZml4LVVSSSBOYW1lc3Bh Y2UgbWFwcGluZy4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBwcmVmaXggVGhl IE5hbWVzcGFjZSBwcmVmaXggYmVpbmcgZGVjbGFyZWQuDQogICAgICogQHBh cmFtIHVyaSBUaGUgTmFtZXNwYWNlIFVSSSB0aGUgcHJlZml4IGlzIG1hcHBl ZCB0by4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBzdGFydFByZWZpeE1h cHBpbmcoU3RyaW5nIHByZWZpeCwgU3RyaW5nIHVyaSkNCiAgICB0aHJvd3Mg U0FYRXhjZXB0aW9uIHsNCiAgICAgICAgaWYgKGV4dHJhY3RMZXZlbCA9PSAw KSB7DQogICAgICAgICAgICBzdXBlci5zdGFydFByZWZpeE1hcHBpbmcocHJl Zml4LHVyaSk7DQogICAgICAgICAgICBwcmVmaXhNYXAucHV0KHByZWZpeCx1 cmkpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy90aGlzLmN1 cnJlbnRCdWlsZGVyLnN0YXJ0UHJlZml4TWFwcGluZyhwcmVmaXgsdXJpKTsN CiAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplci5zdGFydFByZWZpeE1hcHBp bmcocHJlZml4LHVyaSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioN CiAgICAgKiBFbmQgdGhlIHNjb3BlIG9mIGEgcHJlZml4LVVSSSBtYXBwaW5n Lg0KICAgICAqDQogICAgICogQHBhcmFtIHByZWZpeCBUaGUgcHJlZml4IHRo YXQgd2FzIGJlaW5nIG1hcHBpbmcuDQogICAgICovDQogICAgcHVibGljIHZv aWQgZW5kUHJlZml4TWFwcGluZyhTdHJpbmcgcHJlZml4KQ0KICAgIHRocm93 cyBTQVhFeGNlcHRpb24gew0KICAgICAgICBpZiAoZXh0cmFjdExldmVsID09 IDApIHsNCiAgICAgICAgICAgIHN1cGVyLmVuZFByZWZpeE1hcHBpbmcocHJl Zml4KTsNCiAgICAgICAgICAgIHByZWZpeE1hcC5yZW1vdmUocHJlZml4KTsN CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vdGhpcy5jdXJyZW50 QnVpbGRlci5lbmRQcmVmaXhNYXBwaW5nKHByZWZpeCk7DQogICAgICAgICAg ICB0aGlzLnNlcmlhbGl6ZXIuZW5kUHJlZml4TWFwcGluZyhwcmVmaXgpOw0K ICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVjZWl2ZSBu b3RpZmljYXRpb24gb2YgdGhlIGJlZ2lubmluZyBvZiBhbiBlbGVtZW50Lg0K ICAgICAqDQogICAgICogQHBhcmFtIHVyaSBUaGUgTmFtZXNwYWNlIFVSSSwg b3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgZWxlbWVudCBoYXMgbm8NCiAg ICAgKiAgICAgICAgICAgIE5hbWVzcGFjZSBVUkkgb3IgaWYgTmFtZXNwYWNl DQogICAgICogICAgICAgICAgICBwcm9jZXNzaW5nIGlzIG5vdCBiZWluZyBw ZXJmb3JtZWQuDQogICAgICogQHBhcmFtIGxvYyBUaGUgbG9jYWwgbmFtZSAo d2l0aG91dCBwcmVmaXgpLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmDQogICAg ICogICAgICAgICAgICBOYW1lc3BhY2UgcHJvY2Vzc2luZyBpcyBub3QgYmVp bmcgcGVyZm9ybWVkLg0KICAgICAqIEBwYXJhbSByYXcgVGhlIHJhdyBYTUwg MS4wIG5hbWUgKHdpdGggcHJlZml4KSwgb3IgdGhlIGVtcHR5IHN0cmluZyBp Zg0KICAgICAqICAgICAgICAgICAgcmF3IG5hbWVzIGFyZSBub3QgYXZhaWxh YmxlLg0KICAgICAqIEBwYXJhbSBhIFRoZSBhdHRyaWJ1dGVzIGF0dGFjaGVk IHRvIHRoZSBlbGVtZW50LiBJZiB0aGVyZSBhcmUgbm8NCiAgICAgKiAgICAg ICAgICBhdHRyaWJ1dGVzLCBpdCBzaGFsbCBiZSBhbiBlbXB0eSBBdHRyaWJ1 dGVzIG9iamVjdC4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBzdGFydEVs ZW1lbnQoU3RyaW5nIHVyaSwgU3RyaW5nIGxvYywgU3RyaW5nIHJhdywgQXR0 cmlidXRlcyBhKQ0KICAgIHRocm93cyBTQVhFeGNlcHRpb24gew0KICAgICAg ICBpZiAodGhpcy5leHRyYWN0VVJJLmVxdWFscyh1cmkpICYmIHRoaXMuZXh0 cmFjdEVsZW1lbnQuZXF1YWxzKGxvYykpIHsNCiAgICAgICAgICAgIGV4dHJh Y3RMZXZlbCsrOw0KICAgICAgICAgICAgZ2V0TG9nZ2VyKCkuZGVidWcoIkZy YWdtZW50RXh0cmFjdG9yVHJhbnNmb3JtZXIgZXh0cmFjdExldmVsIG5vdyAi ICsgZXh0cmFjdExldmVsICsgIi4iKTsNCg0KICAgICAgICAgICAgLy8gU3Rh cnQgdGhlIGRvY3VtZW50DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAg ICAgICB0aGlzLnNlcmlhbGl6ZXIgPSAoWE1MU2VyaWFsaXplcikgdGhpcy5t YW5hZ2VyLmxvb2t1cChYTUxTZXJpYWxpemVyLlJPTEUpOyANCiAgICAgICAg ICAgIH0gY2F0Y2ggKENvbXBvbmVudEV4Y2VwdGlvbiBjZSkgew0KICAgICAg ICAgICAgICB0aHJvdyBuZXcgU0FYRXhjZXB0aW9uKA0KICAgICAgICAgICAg ICAgICJDb3VsZCBub3QgbG9va3VwIGZvciBYTUxTZXJpYWxpemVyLiIsIGNl DQogICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAg ICAgIEl0ZXJhdG9yIGl0dCA9IHByZWZpeE1hcC5lbnRyeVNldCgpLml0ZXJh dG9yKCk7DQogICAgICAgICAgICB3aGlsZSAoaXR0Lmhhc05leHQoKSkgew0K ICAgICAgICAgICAgICAgIE1hcC5FbnRyeSBlbnRyeSA9IChNYXAuRW50cnkp aXR0Lm5leHQoKTsNCiAgICAgICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZXIu c3RhcnRQcmVmaXhNYXBwaW5nKA0KICAgICAgICAgICAgICAgICAgICAoU3Ry aW5nKWVudHJ5LmdldEtleSgpLA0KICAgICAgICAgICAgICAgICAgICAoU3Ry aW5nKWVudHJ5LmdldFZhbHVlKCkNCiAgICAgICAgICAgICAgICApOw0KICAg ICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGV4dHJhY3RM ZXZlbCA9PSAwKSB7DQogICAgICAgICAgICBzdXBlci5zdGFydEVsZW1lbnQo dXJpLGxvYyxyYXcsYSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAg ICB0aGlzLnNlcmlhbGl6ZXIuc3RhcnRFbGVtZW50KHVyaSxsb2MscmF3LGEp Ow0KICAgICAgICB9DQogICAgfQ0KDQoNCiAgICAvKioNCiAgICAgKiBSZWNl aXZlIG5vdGlmaWNhdGlvbiBvZiB0aGUgZW5kIG9mIGFuIGVsZW1lbnQuDQog ICAgICoNCiAgICAgKiBAcGFyYW0gdXJpIFRoZSBOYW1lc3BhY2UgVVJJLCBv ciB0aGUgZW1wdHkgc3RyaW5nIGlmIHRoZSBlbGVtZW50IGhhcyBubw0KICAg ICAqICAgICAgICAgICAgTmFtZXNwYWNlIFVSSSBvciBpZiBOYW1lc3BhY2UN CiAgICAgKiAgICAgICAgICAgIHByb2Nlc3NpbmcgaXMgbm90IGJlaW5nIHBl cmZvcm1lZC4NCiAgICAgKiBAcGFyYW0gbG9jIFRoZSBsb2NhbCBuYW1lICh3 aXRob3V0IHByZWZpeCksIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYNCiAgICAg KiAgICAgICAgICAgIE5hbWVzcGFjZSBwcm9jZXNzaW5nIGlzIG5vdCBiZWlu ZyBwZXJmb3JtZWQuDQogICAgICogQHBhcmFtIHJhdyBUaGUgcmF3IFhNTCAx LjAgbmFtZSAod2l0aCBwcmVmaXgpLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlm DQogICAgICogICAgICAgICAgICByYXcgbmFtZXMgYXJlIG5vdCBhdmFpbGFi bGUuDQogICAgICovDQogICAgcHVibGljIHZvaWQgZW5kRWxlbWVudChTdHJp bmcgdXJpLCBTdHJpbmcgbG9jLCBTdHJpbmcgcmF3KQ0KICAgIHRocm93cyBT QVhFeGNlcHRpb24gew0KICAgICAgICBpZiAoZXh0cmFjdExldmVsID09IDAp IHsNCiAgICAgICAgICAgIHN1cGVyLmVuZEVsZW1lbnQodXJpLGxvYyxyYXcp Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5zZXJpYWxp emVyLmVuZEVsZW1lbnQodXJpLGxvYyxyYXcpOw0KICAgICAgICAgICAgaWYg KHRoaXMuZXh0cmFjdFVSSS5lcXVhbHModXJpKSAmJiB0aGlzLmV4dHJhY3RF bGVtZW50LmVxdWFscyhsb2MpKSB7DQogICAgICAgICAgICAgICAgZXh0cmFj dExldmVsLS07DQogICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkuZGVidWco IkZyYWdtZW50RXh0cmFjdG9yVHJhbnNmb3JtZXIgZXh0cmFjdExldmVsIG5v dyAiICsgZXh0cmFjdExldmVsICsgIi4iKTsNCg0KICAgICAgICAgICAgICAg IGlmIChleHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAgICAgICAgICAg ICAvLyBmaW5pc2ggYnVpbGRpbmcgdGhlIERPTS4gcmVtb3ZlIGV4aXN0aW5n IHByZWZpeCBtYXBwaW5ncy4NCiAgICAgICAgICAgICAgICAgICAgSXRlcmF0 b3IgaXR0ID0gcHJlZml4TWFwLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsNCiAg ICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0dC5oYXNOZXh0KCkpIHsNCiAg ICAgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeSBlbnRyeSA9IChNYXAu RW50cnkpIGl0dC5uZXh0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB0 aGlzLnNlcmlhbGl6ZXIuZW5kUHJlZml4TWFwcGluZygNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoU3RyaW5nKWVudHJ5LmdldEtleSgpDQogICAg ICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplci5lbmREb2N1 bWVudCgpOw0KDQogICAgICAgICAgICAgICAgICAgIE9iamVjdCBkb2MgPSB0 aGlzLnNlcmlhbGl6ZXIuZ2V0U0FYRnJhZ21lbnQoKTsNCg0KICAgICAgICAg ICAgICAgICAgICB0aGlzLm1hbmFnZXIucmVsZWFzZSh0aGlzLnNlcmlhbGl6 ZXIpOw0KDQogICAgICAgICAgICAgICAgICAgIFN0cmluZyBpZCA9IChuZXcg VUlEKCkpLnRvU3RyaW5nKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8g Q2Fubm90IGNyZWF0ZSBGaWxlIG5hbWVzIHdpdGggYSAnOicgKGluIGNvbW1h bmQtbGluZSBnZW5lcmF0aW9uKQ0KICAgICAgICAgICAgICAgICAgICAvLyBT byByZXBsYWNlICc6JyB3aXRoICctJw0KICAgICAgICAgICAgICAgICAgICBp ZCA9IGlkLnJlcGxhY2UoJzonLCctJyk7ICANCg0KICAgICAgICAgICAgICAg ICAgICBpZiAoc2Vzc2lvbkF2YWlsYWJsZSkNCiAgICAgICAgICAgICAgICAg ICAgICAgIHNlc3Npb24uc2V0QXR0cmlidXRlKGlkLCBkb2MpOw0KDQogICAg ICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLmRlYnVnKCJGcmFnbWVudEV4 dHJhY3RvclRyYW5zZm9ybWVyIHN0b3JlZCBkb2N1bWVudCAiICsgaWQgKyAi LiIpOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIEluc2VydCByZWYuDQog ICAgICAgICAgICAgICAgICAgIHN1cGVyLnN0YXJ0UHJlZml4TWFwcGluZygi ZmUiLCBGRV9VUkkpOw0KICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVz SW1wbCBhdHRzID0gbmV3IEF0dHJpYnV0ZXNJbXBsKCk7DQogICAgICAgICAg ICAgICAgICAgIGF0dHMuYWRkQXR0cmlidXRlKG51bGwsImZyYWdtZW50LWlk IiwiZnJhZ21lbnQtaWQiLCJDREFUQSIsaWQpOw0KICAgICAgICAgICAgICAg ICAgICBzdXBlci5zdGFydEVsZW1lbnQoRkVfVVJJLCJmcmFnbWVudCIsImZl OmZyYWdtZW50IixhdHRzKTsNCiAgICAgICAgICAgICAgICAgICAgc3VwZXIu ZW5kRWxlbWVudChGRV9VUkksImZyYWdtZW50IiwiZmU6ZnJhZ21lbnQiKTsN CiAgICAgICAgICAgICAgICAgICAgc3VwZXIuZW5kUHJlZml4TWFwcGluZygi ZmUiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAg ICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZWNlaXZlIG5vdGlm aWNhdGlvbiBvZiBjaGFyYWN0ZXIgZGF0YS4NCiAgICAgKg0KICAgICAqIEBw YXJhbSBjIFRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlIFhNTCBkb2N1bWVudC4N CiAgICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uIGluIHRo ZSBhcnJheS4NCiAgICAgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgY2hh cmFjdGVycyB0byByZWFkIGZyb20gdGhlIGFycmF5Lg0KICAgICAqLw0KICAg IHB1YmxpYyB2b2lkIGNoYXJhY3RlcnMoY2hhciBjW10sIGludCBzdGFydCwg aW50IGxlbikNCiAgICB0aHJvd3MgU0FYRXhjZXB0aW9uIHsNCiAgICAgICAg aWYgKGV4dHJhY3RMZXZlbCA9PSAwKSB7DQogICAgICAgICAgICBzdXBlci5j aGFyYWN0ZXJzKGMsc3RhcnQsbGVuKTsNCiAgICAgICAgfSBlbHNlIHsNCiAg ICAgICAgICAgIHRoaXMuc2VyaWFsaXplci5jaGFyYWN0ZXJzKGMsc3RhcnQs bGVuKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJl Y2VpdmUgbm90aWZpY2F0aW9uIG9mIGlnbm9yYWJsZSB3aGl0ZXNwYWNlIGlu IGVsZW1lbnQgY29udGVudC4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBjIFRo ZSBjaGFyYWN0ZXJzIGZyb20gdGhlIFhNTCBkb2N1bWVudC4NCiAgICAgKiBA cGFyYW0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uIGluIHRoZSBhcnJheS4N CiAgICAgKiBAcGFyYW0gbGVuIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0 byByZWFkIGZyb20gdGhlIGFycmF5Lg0KICAgICAqLw0KICAgIHB1YmxpYyB2 b2lkIGlnbm9yYWJsZVdoaXRlc3BhY2UoY2hhciBjW10sIGludCBzdGFydCwg aW50IGxlbikNCiAgICB0aHJvd3MgU0FYRXhjZXB0aW9uIHsNCiAgICAgICAg aWYgKGV4dHJhY3RMZXZlbCA9PSAwKSB7DQogICAgICAgICAgICBzdXBlci5p Z25vcmFibGVXaGl0ZXNwYWNlKGMsc3RhcnQsbGVuKTsNCiAgICAgICAgfSBl bHNlIHsNCiAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplci5pZ25vcmFibGVX aGl0ZXNwYWNlKGMsc3RhcnQsbGVuKTsNCiAgICAgICAgfQ0KICAgIH0NCg0K ICAgIC8qKg0KICAgICAqIFJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGEgcHJv Y2Vzc2luZyBpbnN0cnVjdGlvbi4NCiAgICAgKg0KICAgICAqIEBwYXJhbSB0 YXJnZXQgVGhlIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gdGFyZ2V0Lg0KICAg ICAqIEBwYXJhbSBkYXRhIFRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGRh dGEsIG9yIG51bGwgaWYgbm9uZSB3YXMNCiAgICAgKiAgICAgICAgICAgICBz dXBwbGllZC4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBwcm9jZXNzaW5n SW5zdHJ1Y3Rpb24oU3RyaW5nIHRhcmdldCwgU3RyaW5nIGRhdGEpDQogICAg dGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogICAgICAgIGlmIChleHRyYWN0TGV2 ZWwgPT0gMCkgew0KICAgICAgICAgICAgc3VwZXIucHJvY2Vzc2luZ0luc3Ry dWN0aW9uKHRhcmdldCxkYXRhKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgIHRoaXMuc2VyaWFsaXplci5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24o dGFyZ2V0LGRhdGEpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQog ICAgICogUmVjZWl2ZSBub3RpZmljYXRpb24gb2YgYSBza2lwcGVkIGVudGl0 eS4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRo ZSBza2lwcGVkIGVudGl0eS4gIElmIGl0IGlzIGEgIHBhcmFtZXRlcg0KICAg ICAqICAgICAgICAgICAgIGVudGl0eSwgdGhlIG5hbWUgd2lsbCBiZWdpbiB3 aXRoICclJy4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBza2lwcGVkRW50 aXR5KFN0cmluZyBuYW1lKQ0KICAgIHRocm93cyBTQVhFeGNlcHRpb24gew0K ICAgICAgICBpZiAoZXh0cmFjdExldmVsID09IDApIHsNCiAgICAgICAgICAg IHN1cGVyLnNraXBwZWRFbnRpdHkobmFtZSk7DQogICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZXIuc2tpcHBlZEVudGl0eShu YW1lKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJl cG9ydCB0aGUgc3RhcnQgb2YgRFREIGRlY2xhcmF0aW9ucywgaWYgYW55Lg0K ICAgICAqDQogICAgICogQHBhcmFtIG5hbWUgVGhlIGRvY3VtZW50IHR5cGUg bmFtZS4NCiAgICAgKiBAcGFyYW0gcHVibGljSWQgVGhlIGRlY2xhcmVkIHB1 YmxpYyBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZXJuYWwgRFREDQogICAgICog ICAgICAgICAgICAgICAgIHN1YnNldCwgb3IgbnVsbCBpZiBub25lIHdhcyBk ZWNsYXJlZC4NCiAgICAgKiBAcGFyYW0gc3lzdGVtSWQgVGhlIGRlY2xhcmVk IHN5c3RlbSBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZXJuYWwgRFREDQogICAg ICogICAgICAgICAgICAgICAgIHN1YnNldCwgb3IgbnVsbCBpZiBub25lIHdh cyBkZWNsYXJlZC4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBzdGFydERU RChTdHJpbmcgbmFtZSwgU3RyaW5nIHB1YmxpY0lkLCBTdHJpbmcgc3lzdGVt SWQpDQogICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogICAgICAgIGlmIChl eHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAgICAgc3VwZXIuc3RhcnRE VEQobmFtZSxwdWJsaWNJZCxzeXN0ZW1JZCk7DQogICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICB0aHJvdyBuZXcgU0FYRXhjZXB0aW9uKA0KICAgICAg ICAgICAgICAgICJSZWNpZXZlZCBzdGFydERURCBhZnRlciBiZWdpbm5pbmcg ZnJhZ21lbnQgZXh0cmFjdGlvbiBwcm9jZXNzLiINCiAgICAgICAgICAgICk7 DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXBvcnQg dGhlIGVuZCBvZiBEVEQgZGVjbGFyYXRpb25zLg0KICAgICAqLw0KICAgIHB1 YmxpYyB2b2lkIGVuZERURCgpDQogICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7 DQogICAgICAgIGlmIChleHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAg ICAgc3VwZXIuZW5kRFREKCk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAg ICAgICB0aHJvdyBuZXcgU0FYRXhjZXB0aW9uKA0KICAgICAgICAgICAgICAg ICJSZWNpZXZlZCBlbmREVEQgYWZ0ZXIgYmVnaW5uaW5nIGZyYWdtZW50IGV4 dHJhY3Rpb24gcHJvY2Vzcy4iDQogICAgICAgICAgICApOw0KICAgICAgICB9 DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVwb3J0IHRoZSBiZWdpbm5p bmcgb2YgYW4gZW50aXR5Lg0KICAgICAqDQogICAgICogQHBhcmFtIG5hbWUg VGhlIG5hbWUgb2YgdGhlIGVudGl0eS4gSWYgaXQgaXMgYSBwYXJhbWV0ZXIg ZW50aXR5LCB0aGUNCiAgICAgKiAgICAgICAgICAgICBuYW1lIHdpbGwgYmVn aW4gd2l0aCAnJScuDQogICAgICovDQogICAgcHVibGljIHZvaWQgc3RhcnRF bnRpdHkoU3RyaW5nIG5hbWUpDQogICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7 DQogICAgICAgIGlmIChleHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAg ICAgc3VwZXIuc3RhcnRFbnRpdHkobmFtZSk7DQogICAgICAgIH0gZWxzZSB7 DQogICAgICAgICAgICB0aGlzLnNlcmlhbGl6ZXIuc3RhcnRFbnRpdHkobmFt ZSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXBv cnQgdGhlIGVuZCBvZiBhbiBlbnRpdHkuDQogICAgICoNCiAgICAgKiBAcGFy YW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IHRoYXQgaXMgZW5kaW5n Lg0KICAgICAqLw0KICAgIHB1YmxpYyB2b2lkIGVuZEVudGl0eShTdHJpbmcg bmFtZSkNCiAgICB0aHJvd3MgU0FYRXhjZXB0aW9uIHsNCiAgICAgICAgaWYg KGV4dHJhY3RMZXZlbCA9PSAwKSB7DQogICAgICAgICAgICBzdXBlci5lbmRF bnRpdHkobmFtZSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0 aGlzLnNlcmlhbGl6ZXIuZW5kRW50aXR5KG5hbWUpOw0KICAgICAgICB9DQog ICAgfQ0KDQogICAgLyoqDQogICAgICogUmVwb3J0IHRoZSBzdGFydCBvZiBh IENEQVRBIHNlY3Rpb24uDQogICAgICovDQogICAgcHVibGljIHZvaWQgc3Rh cnRDREFUQSgpDQogICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogICAgICAg IGlmIChleHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAgICAgc3VwZXIu c3RhcnRDREFUQSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg dGhpcy5zZXJpYWxpemVyLnN0YXJ0Q0RBVEEoKTsNCiAgICAgICAgfQ0KICAg IH0NCg0KICAgIC8qKg0KICAgICAqIFJlcG9ydCB0aGUgZW5kIG9mIGEgQ0RB VEEgc2VjdGlvbi4NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBlbmRDREFU QSgpDQogICAgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7DQogICAgICAgIGlmIChl eHRyYWN0TGV2ZWwgPT0gMCkgew0KICAgICAgICAgICAgc3VwZXIuZW5kQ0RB VEEoKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuc2Vy aWFsaXplci5lbmRDREFUQSgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAg LyoqDQogICAgICogUmVwb3J0IGFuIFhNTCBjb21tZW50IGFueXdoZXJlIGlu IHRoZSBkb2N1bWVudC4NCiAgICAgKg0KICAgICAqIEBwYXJhbSBjaCBBbiBh cnJheSBob2xkaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBjb21tZW50Lg0K ICAgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnRpbmcgcG9zaXRpb24gaW4g dGhlIGFycmF5Lg0KICAgICAqIEBwYXJhbSBsZW4gVGhlIG51bWJlciBvZiBj aGFyYWN0ZXJzIHRvIHVzZSBmcm9tIHRoZSBhcnJheS4NCiAgICAgKi8NCiAg ICBwdWJsaWMgdm9pZCBjb21tZW50KGNoYXIgY2hbXSwgaW50IHN0YXJ0LCBp bnQgbGVuKQ0KICAgIHRocm93cyBTQVhFeGNlcHRpb24gew0KICAgICAgICBp ZiAoZXh0cmFjdExldmVsID09IDApIHsNCiAgICAgICAgICAgIHN1cGVyLmNv bW1lbnQoY2gsc3RhcnQsbGVuKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAg ICAgICAgIHRoaXMuc2VyaWFsaXplci5jb21tZW50KGNoLHN0YXJ0LGxlbik7 DQogICAgICAgIH0NCiAgICB9DQoNCn0NCg== ---1463778750-1371738547-1013904328=:621 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="FragmentExtractorGenerator.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="FragmentExtractorGenerator.java" LyoNCiAqIFRoZSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAx LjENCiAqDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDAxIFRoZSBBcGFjaGUg U29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMNCiAqIHJlc2VydmVk Lg0KICoNCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zDQogKiBhcmUgbWV0Og0KICoNCiAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg Y29weXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogKg0KICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bg0KICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KICogICAgZGlzdHJpYnV0aW9uLg0K ICoNCiAqIDMuIFRoZSBlbmQtdXNlciBkb2N1bWVudGF0aW9uIGluY2x1ZGVk IHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLA0KICogICAgaWYgYW55LCBtdXN0 IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnbWVudDoNCiAqICAg ICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVk IGJ5IHRoZQ0KICogICAgICAgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u IChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4iDQogKiAgICBBbHRlcm5hdGVs eSwgdGhpcyBhY2tub3dsZWRnbWVudCBtYXkgYXBwZWFyIGluIHRoZSBzb2Z0 d2FyZSBpdHNlbGYsDQogKiAgICBpZiBhbmQgd2hlcmV2ZXIgc3VjaCB0aGly ZC1wYXJ0eSBhY2tub3dsZWRnbWVudHMgbm9ybWFsbHkgYXBwZWFyLg0KICoN CiAqIDQuIFRoZSBuYW1lcyAiQXBhY2hlIENvY29vbiIgYW5kICJBcGFjaGUg U29mdHdhcmUgRm91bmRhdGlvbiIgbXVzdA0KICogICAgbm90IGJlIHVzZWQg dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzDQogKiAgICBzb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4gRm9yIHdyaXR0ZW4NCiAqICAgIHBlcm1pc3Npb24sIHBsZWFz ZSBjb250YWN0IGFwYWNoZUBhcGFjaGUub3JnLg0KICoNCiAqIDUuIFByb2R1 Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2Fs bGVkICJBcGFjaGUiLA0KICogICAgbm9yIG1heSAiQXBhY2hlIiBhcHBlYXIg aW4gdGhlaXIgbmFtZSwgd2l0aG91dCBwcmlvciB3cml0dGVuDQogKiAgICBw ZXJtaXNzaW9uIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4N CiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBB TkQgQU5ZIEVYUFJFU1NFRCBPUiBJTVBMSUVEDQogKiBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS UkFOVElFUw0KICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCiAqIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVBBQ0hFIFNPRlRXQVJFIEZPVU5EQVRJ T04gT1INCiAqIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCiAqIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVCBOT1QNCiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YNCiAqIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRCBBTkQNCiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLA0KICog T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkgT1VUDQogKiBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YNCiAqIFNVQ0ggREFNQUdFLg0KICogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCiAqDQogKiBUaGlzIHNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFy eSBjb250cmlidXRpb25zIG1hZGUgYnkgbWFueQ0KICogaW5kaXZpZHVhbHMg b24gYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4g IEZvciBtb3JlDQogKiBpbmZvcm1hdGlvbiBvbiB0aGUgQXBhY2hlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIHBsZWFzZSBzZWUNCiAqIDxodHRwOi8vd3d3LmFw YWNoZS5vcmcvPi4NCiAqLw0KcGFja2FnZSBvcmcuYXBhY2hlLmNvY29vbi5n ZW5lcmF0aW9uOw0KDQppbXBvcnQgb3JnLmFwYWNoZS5hdmFsb24uZnJhbWV3 b3JrLmNvbXBvbmVudC5Db21wb25lbnRFeGNlcHRpb247DQppbXBvcnQgb3Jn LmFwYWNoZS5hdmFsb24uZnJhbWV3b3JrLmNvbXBvbmVudC5Db21wb25lbnRN YW5hZ2VyOw0KaW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5j b21wb25lbnQuQ29tcG9zYWJsZTsNCmltcG9ydCBvcmcuYXBhY2hlLmF2YWxv bi5mcmFtZXdvcmsucGFyYW1ldGVycy5QYXJhbWV0ZXJzOw0KDQppbXBvcnQg b3JnLmFwYWNoZS5jb2Nvb24uQ29uc3RhbnRzOw0KaW1wb3J0IG9yZy5hcGFj aGUuY29jb29uLlByb2Nlc3NpbmdFeGNlcHRpb247DQppbXBvcnQgb3JnLmFw YWNoZS5jb2Nvb24uY2FjaGluZy5DYWNoZVZhbGlkaXR5Ow0KaW1wb3J0IG9y Zy5hcGFjaGUuY29jb29uLmNhY2hpbmcuQ2FjaGVhYmxlOw0KaW1wb3J0IG9y Zy5hcGFjaGUuY29jb29uLmNhY2hpbmcuTk9QQ2FjaGVWYWxpZGl0eTsNCmlt cG9ydCBvcmcuYXBhY2hlLmNvY29vbi5jb21wb25lbnRzLnNheC5YTUxEZXNl cmlhbGl6ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24uZW52aXJvbm1l bnQuQWJzdHJhY3RFbnZpcm9ubWVudDsNCmltcG9ydCBvcmcuYXBhY2hlLmNv Y29vbi5lbnZpcm9ubWVudC5PYmplY3RNb2RlbEhlbHBlcjsNCmltcG9ydCBv cmcuYXBhY2hlLmNvY29vbi5lbnZpcm9ubWVudC5SZXF1ZXN0Ow0KaW1wb3J0 IG9yZy5hcGFjaGUuY29jb29uLmVudmlyb25tZW50LlNlc3Npb247DQppbXBv cnQgb3JnLmFwYWNoZS5jb2Nvb24uZW52aXJvbm1lbnQuU291cmNlUmVzb2x2 ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24udXRpbC5IYXNoVXRpbDsN Cg0KaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50Ow0KaW1wb3J0IG9yZy54 bWwuc2F4LlNBWEV4Y2VwdGlvbjsNCg0KaW1wb3J0IGphdmEuaW8uSU9FeGNl cHRpb247DQppbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOw0KaW1wb3J0 IGphdmEudXRpbC5IYXNoTWFwOw0KaW1wb3J0IGphdmEudXRpbC5NYXA7DQoN Ci8qKiBUaGUgZ2VuZXJhdGlvbiBoYWxmIG9mIEZyYWdtZW50RXh0cmFjdG9y Lg0KICogRnJhZ21lbnRFeHRyYWN0b3IgaXMgYSB0cmFuc2Zvcm1lci1nZW5l cmF0b3IgcGFpciB3aGljaCBpcyBkZXNpZ25lZCB0byBhbGxvdw0KICogc2l0 ZW1hcCBtYW5hZ2VycyB0byBleHRyYWN0IGNlcnRhaW4gbm9kZXMgZnJvbSBh IFNBWCBzdHJlYW0gYW5kIG1vdmUgdGhlbQ0KICogaW50byBhIHNlcGFyYXRl IHBpcGVsaW5lLiBUaGUgbWFpbiB1c2UgZm9yIHRoaXMgaXMgdG8gZXh0cmFj dCBpbmxpbmUgU1ZHDQogKiBpbWFnZXMgYW5kIHNlcnZlIHRoZW0gdXAgdGhy b3VnaCBhIHNlcGFyYXRlIHBpcGVsaW5lLCB1c3VhbGx5IHNlcmlhbGl6aW5n DQogKiB0aGVtIHRvIFBORyBvciBKUEVHIGZvcm1hdCBmaXJzdC4NCiAqDQog KiBUaGlzIGlzIGJ5IG5vIG1lYW5zIGNvbXBsZXRlIHlldCwgYnV0IGl0IHNo b3VsZCBwcm92ZSB1c2VmdWwsIHBhcnRpY3VsYXJseQ0KICogZm9yIG9mZmxp bmUgZ2VuZXJhdGlvbi4NCiAqIDxwPg0KICogPGI+PGVtPldhcm5pbmc8L2Vt PiA6IHNpbmNlIGZyYWdtZW50cyBhcmUgc3RvcmVkIGxvY2FsbHkgaW4gdGhl IGNsYXNzLCB0aGlzIGdlbmVyYXRvcg0KICogYW5kIHRoZSBhc3NvY2lhdGVk IHRyYW5zZm9ybWVyIGFyZSB2ZXJ5IGxpa2VseSB0byBmYWlsIG9uIGEgY2x1 c3RlcmVkIHNlcnZlci48L2I+DQogKg0KICogQGF1dGhvciA8YSBocmVmPSJt YWlsdG86cGF1bEBsdW1pbmFzLmNvLnVrIj5QYXVsIFJ1c3NlbGw8L2E+DQog KiBAdmVyc2lvbiBDVlMgJElkOiBGcmFnbWVudEV4dHJhY3RvckdlbmVyYXRv ci5qYXZhLHYgMS42IDIwMDIvMDIvMDcgMDg6MTc6NTIgY3ppZWdlbGVyIEV4 cCAkDQogKi8NCnB1YmxpYyBjbGFzcyBGcmFnbWVudEV4dHJhY3RvckdlbmVy YXRvciBleHRlbmRzIEFic3RyYWN0R2VuZXJhdG9yDQogICAgICAgIGltcGxl bWVudHMgQ29tcG9zYWJsZSwgQ2FjaGVhYmxlIHsNCg0KICAgIC8qKiBUaGUg Y29tcG9uZW50IG1hbmFnZXIgaW5zdGFuY2UgKi8NCiAgICBwcm90ZWN0ZWQg Q29tcG9uZW50TWFuYWdlciBtYW5hZ2VyID0gbnVsbDsNCg0KICAgIHByaXZh dGUgU2Vzc2lvbiBzZXNzaW9uOw0KDQogICAgcHVibGljIHZvaWQgc2V0dXAo U291cmNlUmVzb2x2ZXIgcmVzb2x2ZXIsIE1hcCBvYmplY3RNb2RlbCwgU3Ry aW5nIHNyYywgUGFyYW1ldGVycyBwYXIpDQogICAgICAgIHRocm93cyBQcm9j ZXNzaW5nRXhjZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsN CiAgICAgICAgc3VwZXIuc2V0dXAocmVzb2x2ZXIsb2JqZWN0TW9kZWwsc3Jj LHBhcik7DQoNCiAgICAgICAgUmVxdWVzdCByZXF1ZXN0ID0gT2JqZWN0TW9k ZWxIZWxwZXIuZ2V0UmVxdWVzdChvYmplY3RNb2RlbCk7DQogICAgICAgIHRo aXMuc2Vzc2lvbiA9IHJlcXVlc3QuZ2V0U2Vzc2lvbihmYWxzZSk7DQogICAg fQ0KDQogICAgLyoqDQogICAgICogU2V0IHRoZSBjdXJyZW50IDxjb2RlPkNv bXBvbmVudE1hbmFnZXI8L2NvZGU+IGluc3RhbmNlIHVzZWQgYnkgdGhpcw0K ICAgICAqIDxjb2RlPkNvbXBvc2FibGU8L2NvZGU+Lg0KICAgICAqLw0KICAg IHB1YmxpYyB2b2lkIGNvbXBvc2UoQ29tcG9uZW50TWFuYWdlciBtYW5hZ2Vy KSB0aHJvd3MgQ29tcG9uZW50RXhjZXB0aW9uIHsNCiAgICAgICAgdGhpcy5t YW5hZ2VyID0gbWFuYWdlcjsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBH ZW5lcmF0ZSB0aGUgdW5pcXVlIGtleS4NCiAgICAgKiBUaGlzIGtleSBtdXN0 IGJlIHVuaXF1ZSBpbnNpZGUgdGhlIHNwYWNlIG9mIHRoaXMgY29tcG9uZW50 Lg0KICAgICAqDQogICAgICogQHJldHVybiBUaGUgZ2VuZXJhdGVkIGtleSBo YXNoZXMgdGhlIHNyYw0KICAgICAqLw0KICAgIHB1YmxpYyBsb25nIGdlbmVy YXRlS2V5KCkgew0KICAgICAgICByZXR1cm4gSGFzaFV0aWwuaGFzaChzb3Vy Y2UpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEdlbmVyYXRlIHRoZSB2 YWxpZGl0eSBvYmplY3QuDQogICAgICoNCiAgICAgKiBAcmV0dXJuIFRoZSBn ZW5lcmF0ZWQgdmFsaWRpdHkgb2JqZWN0IG9yIDxjb2RlPm51bGw8L2NvZGU+ IGlmIHRoZQ0KICAgICAqICAgICAgICAgY29tcG9uZW50IGlzIGN1cnJlbnRs eSBub3QgY2FjaGVhYmxlLg0KICAgICAqLw0KICAgIHB1YmxpYyBDYWNoZVZh bGlkaXR5IGdlbmVyYXRlVmFsaWRpdHkoKSB7DQogICAgICAgIHJldHVybiBO T1BDYWNoZVZhbGlkaXR5LkNBQ0hFX1ZBTElESVRZOw0KICAgIH0NCg0KICAg IHB1YmxpYyB2b2lkIGdlbmVyYXRlKCkgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7 DQogICAgICAgIC8vIE9idGFpbiB0aGUgZnJhZ21lbnRJRCAgKHdoaWNoIGlz IHNpbXBseSB0aGUgZmlsZW5hbWUgcG9ydGlvbiBvZiB0aGUgc291cmNlKQ0K ICAgICAgICBnZXRMb2dnZXIoKS5kZWJ1ZygiRnJhZ21lbnRFeHRyYWN0b3JH ZW5lcmF0b3IgcmV0cmlldmluZyBkb2N1bWVudCAiICsgc291cmNlICsgIi4i KTsNCg0KICAgICAgICBPYmplY3QgZG9jID0gbnVsbDsNCiAgICAgICAgaWYg KHNlc3Npb249PW51bGwpDQogICAgICAgICAgICBnZXRMb2dnZXIoKS5lcnJv cigiRnJhZ21lbnRFeHRyYWN0b3JHZW5lcmF0b3I6IG5vIHNlc3Npb24gb2Jq ZWN0Iik7DQogICAgICAgIGVsc2UgDQogICAgICAgICAgICBkb2MgPSBzZXNz aW9uLmdldEF0dHJpYnV0ZShzb3VyY2UpOw0KDQogICAgICAgIGlmIChkb2Mg PT0gbnVsbCkNCiAgICAgICAgICAgIHRocm93IG5ldyBTQVhFeGNlcHRpb24o IkNvdWxkIG5vdCBmaW5kIGZyYWdtZW50ICIgKyBzb3VyY2UgKyAiLiIpOw0K DQogICAgICAgIFhNTERlc2VyaWFsaXplciBkZXNlcmlhbGl6ZXI7DQogICAg ICAgIHRyeSB7DQogICAgICAgICAgICBkZXNlcmlhbGl6ZXIgPSAoWE1MRGVz ZXJpYWxpemVyKSB0aGlzLm1hbmFnZXIubG9va3VwKFhNTERlc2VyaWFsaXpl ci5ST0xFKTsNCiAgICAgICAgfSBjYXRjaCAoQ29tcG9uZW50RXhjZXB0aW9u IGNlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgU0FYRXhjZXB0aW9uKA0K ICAgICAgICAgICAgICAgICJDb3VsZCBub3QgbG9va3VwIGZvciBYTUxEZXNl cmlhbGl6ZXIuIiwgY2UNCiAgICAgICAgICAgICk7DQogICAgICAgIH0NCiAg DQogICAgICAgIGRlc2VyaWFsaXplci5zZXRDb25zdW1lcih0aGlzLnhtbENv bnN1bWVyKTsNCiAgICAgICAgZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKGRv Yyk7DQogICAgfQ0KfQ0KDQo= ---1463778750-1371738547-1013904328=:621 Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org For additional commands, email: cocoon-dev-help@xml.apache.org ---1463778750-1371738547-1013904328=:621--