RE: Struts 6.4, Ognl and getters without an underlying field
Nate Kerkhofs <[email protected]>
| Newsgroups | gmane.comp.jakarta.struts.user |
|---|---|
| Message-ID | <AM0P191MB0804FAC06B2E7587D351CD6CEB7D2@AM0P191MB0804.EURP191.PROD.OUTLOOK.COM> |
SGVsbG8sDQoNCkkgaGF2ZSBkb25lIHNvbWUgaW52ZXN0aWdhdGluZyBhbmQgZm91bmQgdGhlIGZv bGxvd2luZzoNCg0KMS4gVGhlcmUgd2FzIGFub3RoZXIgZXhjZXB0aW9uIGJlZm9yZSB0aGUgcHJl dmlvdXMgZXhjZXB0aW9uIHRoYXQgSSBkaWRuJ3Qgc2VlIGxhc3Qgd2VlaywgYSBOdWxsUG9pbnRl ckV4Y2VwdGlvbiBmb3IgWUVTTk9BTExERVNDUklQVElPTlM7DQoyLiBBZnRlciBsb29raW5nIGlu dG8gc3RhdGljIGZpZWxkcyBhIGJpdCBtb3JlLCBJIGZvdW5kIHRoYXQgdGhvc2UgYXJlIGluaXRp YWxpemVkIGluIHRoZSBvcmRlciBvZiBkZWNsYXJhdGlvbiwgYW5kIGlmIHlvdSBsb29rIGF0IEJv b3RzdHJhcFN1cHBvcnQgbW9yZSBjbG9zZWx5LCB5b3UnbGwgc2VlIHRoYXQgdGhlIElOU1RBTkNF IHNpbmdsZXRvbiBmaWVsZCBpcyBkZWNsYXJlZCBhbmQgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBv dGhlciBzdGF0aWMgZmluYWwgZmllbGRzIEkgdHJpZWQgdG8gdXNlIGluIHRoZSBjb25zdHJ1Y3Rv ciBhcmUgZGVjbGFyZWQuIFRoYXQgY2F1c2VkIHRoZSBOdWxsUG9pbnRlckV4Y2VwdGlvbiwgYmVj YXVzZSBpdCB3YXMgdHJ5aW5nIHRvIHJlYWQgdGhhdCBzdGF0aWMgdmFyaWFibGUgYmVmb3JlIGl0 IHdhcyBpbml0aWFsaXplZC4gT25jZSBJIG1vdmVkIHRoZSBJTlNUQU5DRSBkZWNsYXJhdGlvbiBh ZnRlciB0aGUgb3RoZXIgc3RhdGljIGZpZWxkIGRlY2xhcmF0aW9ucyB0aGUgY29kZSB3b3JrZWQg d2l0aG91dCBwcm9ibGVtcy4NCjMuIEluIHRoZSBlbmQsIEkgbW92ZWQgdGhlIGNvZGUgZm9yIGNy ZWF0aW5nIHRoaXMgbGlzdCB0byB0aGUgT3ZlcnZpZXdBY3Rpb25TdXBwb3J0LCBiZWNhdXNlIGFz IHlvdSBjYW4gc2VlIHdlIHVzZSBhIGN1c3RvbSBMb2NhbGl6YXRpb24gZW5naW5lLCBhbmQgd2Ug Zm91bmQgaXQgYmV0dGVyIHRvIGtlZXAgdGhpcyBsb2dpYyBjZW50cmFsaXplZCBpbiBvdXIgQmFz ZUFjdGlvblN1cHBvcnQgY2xhc3MsIG1ha2luZyB0aGUgZW50aXJlIEJvb3RzdHJhcFN1cHBvcnQg Y2xhc3Mgb2Jzb2xldGUuDQoNCktpbmQgcmVnYXJkcywNCg0KTmF0ZQ0KDQotLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KRnJvbTogTHVrYXN6IExlbmFydCA8bHVrYXN6bGVuYXJ0QGFwYWNoZS5v cmc+IA0KU2VudDogU3VuZGF5LCA2IE9jdG9iZXIgMjAyNCAwNzo1NQ0KVG86IFN0cnV0cyBVc2Vy cyBNYWlsaW5nIExpc3QgPHVzZXJAc3RydXRzLmFwYWNoZS5vcmc+DQpTdWJqZWN0OiBSZTogU3Ry dXRzIDYuNCwgT2dubCBhbmQgZ2V0dGVycyB3aXRob3V0IGFuIHVuZGVybHlpbmcgZmllbGQNCg0K VGhhdCBzaG91bGQganVzdCB3b3JrLCBJIGRvbid0IHJlY2FsbCBhbnkgY2hhbmdlcyBhZmZlY3Rp bmcgcHJvY2Vzc2luZyB0aGlzLiBDb3VsZCB5b3UgZW5hYmxlIERFQlVHIGxldmVsIGFuZCBpbnNw ZWN0IGxvZ3MgYmVmb3JlIHRoZSBlcnJvciB5b3UgZ2V0LiBNYXliZSB0aGVyZSBpcyBhIHNlY3Vy aXR5IFdBUk5JTkcgeW91IGhhdmUgbWlzc2VkLg0KDQpjencuLCAzIHBhxbogMjAyNCBvIDEwOjI2 IE5hdGUgS2Vya2hvZnMgPE5hdGUuS2Vya2hvZnNAaWthbi5iZT4gbmFwaXNhxYIoYSk6DQo+DQo+ IEhlbGxvLA0KPg0KPiBPbmUgc21hbGwgY29ycmVjdGlvbjogaXQncyBhIFN0cnV0cyA2LjMgcHJv amVjdCwgbm90IDYuNC4gV2Ugd2VyZSBwbGFubmluZyBvbiB1cGdyYWRpbmcgdG8gNi40IG9yIGEg bGF0ZXIgNi5YIHZlcnNpb24sIGJ1dCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXBncmFkZSB0 byA3LjAgdGhpcyByZWxlYXNlIGFueXdheSB3ZSBkZWNpZGVkIHRvIHNraXAgYW55IHVwZ3JhZGVz IGluIGJldHdlZW4uDQo+DQo+IEtpbmQgcmVnYXJkcywNCj4NCj4gTmF0ZSBLZXJraG9mcw0KPg0K PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOYXRlIEtlcmtob2ZzIDxOYXRl Lktlcmtob2ZzQGlrYW4uYmU+DQo+IFNlbnQ6IFRodXJzZGF5LCAzIE9jdG9iZXIgMjAyNCAxMDow Ng0KPiBUbzogU3RydXRzIFVzZXJzIE1haWxpbmcgTGlzdCA8dXNlckBzdHJ1dHMuYXBhY2hlLm9y Zz4NCj4gU3ViamVjdDogU3RydXRzIDYuNCwgT2dubCBhbmQgZ2V0dGVycyB3aXRob3V0IGFuIHVu ZGVybHlpbmcgZmllbGQNCj4NCj4gSGVsbG8sDQo+DQo+IEkgaGF2ZSBhIFN0cnV0cyA2LjQgcGFn ZSB3aXRoIGEgc2VsZWN0LCBhbmQgSSBoYXZlIGEgcHJvYmxlbSBwb3B1bGF0aW5nIHRoZSBsaXN0 IGF0dHJpYnV0ZS4NCj4NCj4gPHM6c2VsZWN0IGlkPSJzZWFyY2hWaWV3X3Nob3dTZWN1cmVkIiBk YXRhLW1kYi1zZWxlY3QtaW5pdD0iIg0KPiBuYW1lPSJzZWFyY2hWaWV3LnNob3dTZWN1cmVkIiB0 aGVtZT0ic2ltcGxlIiBsaXN0PSJ5ZXNOb0FsbExpc3QiDQo+ICAgICAgICAgICAgICAgICBsaXN0 S2V5PSJpZCIgbGlzdFZhbHVlPSJsYWJlbCIgLz4NCj4NCj4NCj4gV2hhdCBJJ20gdHJ5aW5nIHRv IGRvIGlzIHJlbGF0aXZlbHkgc2ltcGxlOiBJIGhhdmUgdGhlIGZvbGxvd2luZyBhY3Rpb24gY29k ZToNCj4NCj4gcHVibGljIGNsYXNzIE1hY2hpbmVQYXJhbWV0ZXJPdmVydmlld0Jvb3RzdHJhcEFj dGlvbiBleHRlbmRzIE92ZXJ2aWV3QWN0aW9uU3VwcG9ydCBpbXBsZW1lbnRzIEV4cGlyYWJsZSB7 IC4uLg0KPiB9DQo+IEFuZCB0aGlzIGlzIHRoZSBzdXBlciBhY3Rpb24uIE5vdGFibHksIHRoaXMg Z2V0dGVyIGRvZXMgTk9UIGhhdmUgYW4gdW5kZXJseWluZyBmaWVsZCBwcm9wZXJ0eS4NCj4gcHVi bGljIGNsYXNzIE92ZXJ2aWV3QWN0aW9uU3VwcG9ydCBleHRlbmRzIEJhc2VBY3Rpb25TdXBwb3J0 IHsgLi4uDQo+IHB1YmxpYyBMaXN0PFNlbGVjdE9wdGlvblZpZXc+IGdldFllc05vQWxsTGlzdCgp IHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vdHN0cmFwU3Vw cG9ydC5nZXRJbnN0YW5jZSgpLmdldFllc05vQWxsTGlzdCgpOw0KPiAgICAgICAgICAgICAgICAg fQ0KPg0KPiB9DQo+DQo+IEluIHRoZSBUb21jYXQgbG9nLCBJIGdldCB0aGlzIGVycm9yOg0KPg0K PiBDYXVzZWQgYnk6IHRhZyAnc2VsZWN0JywgZmllbGQgJ2xpc3QnLCBuYW1lICdzZWFyY2hWaWV3 LnNob3dTZWN1cmVkJzogVGhlIHJlcXVlc3RlZCBsaXN0IGtleSAneWVzTm9BbGxMaXN0JyBjb3Vs ZCBub3QgYmUgcmVzb2x2ZWQgYXMgYSBjb2xsZWN0aW9uL2FycmF5L21hcC9lbnVtZXJhdGlvbi9p dGVyYXRvciB0eXBlLiBFeGFtcGxlOiBwZW9wbGUgb3IgcGVvcGxlLntuYW1lfSAtIFt1bmtub3du IGxvY2F0aW9uXQ0KPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLkNv bXBvbmVudC5maWVsZEVycm9yKENvbXBvbmVudC5qYXZhOjI4NCkNCj4gICAgICAgICBhdCBvcmcu YXBhY2hlLnN0cnV0czIuY29tcG9uZW50cy5Db21wb25lbnQuZmluZFZhbHVlKENvbXBvbmVudC5q YXZhOjM2MykNCj4gICAgICAgICBhdCBvcmcuYXBhY2hlLnN0cnV0czIuY29tcG9uZW50cy5MaXN0 VUlCZWFuLmV2YWx1YXRlRXh0cmFQYXJhbXMoTGlzdFVJQmVhbi5qYXZhOjc4KQ0KPiAgICAgICAg IGF0IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLlNlbGVjdC5ldmFsdWF0ZUV4dHJhUGFy YW1zKFNlbGVjdC5qYXZhOjEwMSkNCj4gICAgICAgICBhdCBvcmcuYXBhY2hlLnN0cnV0czIuY29t cG9uZW50cy5VSUJlYW4uZXZhbHVhdGVQYXJhbXMoVUlCZWFuLmphdmE6ODg0KQ0KPiAgICAgICAg IGF0IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLlVJQmVhbi5lbmQoVUlCZWFuLmphdmE6 NTUwKQ0KPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuc3RydXRzMi52aWV3cy5qc3AuQ29tcG9uZW50 VGFnU3VwcG9ydC5kb0VuZFRhZyhDb21wb25lbnRUYWdTdXBwb3J0LmphdmE6NDApDQo+ICAgICAg ICAgYXQgb3JnLmFwYWNoZS5qc3AuanNwLm1hY2hpbmVwYXJhbWV0ZXIubWFjaGluZVBhcmFtZXRl ck92ZXJ2aWV3Qm9vdHN0cmFwX2pzcC5fanNweF9tZXRoX3NfMDA1ZnNlbGVjdF8wMDVmMShtYWNo aW5lUGFyYW1ldGVyT3ZlcnZpZXdCb290c3RyYXBfanNwLmphdmE6MTE5NDkpDQo+ICAgICAgICAg YXQgb3JnLmFwYWNoZS5qc3AuanNwLm1hY2hpbmVwYXJhbWV0ZXIubWFjaGluZVBhcmFtZXRlck92 ZXJ2aWV3Qm9vdHN0cmFwX2pzcC5fanNwU2VydmljZShtYWNoaW5lUGFyYW1ldGVyT3ZlcnZpZXdC b290c3RyYXBfanNwLmphdmE6MTIwOSkNCj4gICAgICAgICBhdCBvcmcuYXBhY2hlLmphc3Blci5y dW50aW1lLkh0dHBKc3BCYXNlLnNlcnZpY2UoSHR0cEpzcEJhc2UuamF2YTo3MCkNCj4gICAgICAg ICBhdCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQuc2VydmljZShIdHRwU2VydmxldC5q YXZhOjYyMykNCj4gICAgICAgICBhdCBvcmcuYXBhY2hlLmphc3Blci5zZXJ2bGV0LkpzcFNlcnZs ZXRXcmFwcGVyLnNlcnZpY2UoSnNwU2VydmxldFdyYXBwZXIuamF2YTo0NjYpDQo+ICAgICAgICAg Li4uIDExOCBtb3JlDQo+DQo+IEkgYXNzdW1lZCB0aGF0IFN0cnV0cyA2LjQgd291bGQgdXNlIGdl dHRlcnMgYW5kIHNldHRlcnMgdG8gaW50ZXJhY3Qgd2l0aCBwcm9wZXJ0aWVzIG9uIHRoZSBwYWdl LCBiZWNhdXNlIEFGQUlLIHRoYXQncyB3aGF0IGl0IGRpZCBpbiBTdHJ1dHMgMi4zIGFuZCAyLjUs IGFuZCBoZW5jZSBJIGNvdWxkIGp1c3QgdXNlIGEgZ2V0dGVyIHdpdGhvdXQgaGF2aW5nIGEgZmll bGQgcHJvcGVydHkgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBuYW1lIG9uIHRoZSBhY3Rpb24uIElz IHRoYXQgYXNzdW1wdGlvbiBpbmNvcnJlY3Q/DQo+DQo+IEZvciBjb21wbGV0ZW5lc3MsIHRoaXMg aXMgQm9vdHN0cmFwU3VwcG9ydC5qYXZhOg0KPg0KPiBwdWJsaWMgZmluYWwgY2xhc3MgQm9vdHN0 cmFwU3VwcG9ydCBleHRlbmRzIEFjdGlvblN1cHBvcnQgew0KPg0KPiAgICAgICAgICAgICAgICAg LyoqDQo+ICAgICAgICAgICAgICAgICAqDQo+ICAgICAgICAgICAgICAgICAgKi8NCj4gICAgICAg ICAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IA0K PiAzMTU5NjYzMTA2NTMwMjE3MjkzTDsNCj4NCj4gICAgICAgICAgICAgICAgIHByaXZhdGUgQm9v dHN0cmFwU3VwcG9ydCgpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk WWVzTm9BbGxPcHRpb25zTWFwKCk7DQo+ICAgICAgICAgICAgICAgICB9DQo+DQo+ICAgICAgICAg ICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCb290c3RyYXBTdXBwb3J0IElOU1RBTkNFID0g bmV3IA0KPiBCb290c3RyYXBTdXBwb3J0KCk7DQo+DQo+ICAgICAgICAgICAgICAgICAvKioNCj4g ICAgICAgICAgICAgICAgICogVGhlIHRleHQgcHJvdmlkZXIsIGluaXRpYWxpemVkIHdpdGggYW4g aW5zdGFuY2Ugb2YgdGhlIEN1c3RvbVRleHRQcm92aWRlci4NCj4gICAgICAgICAgICAgICAgICov DQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIGZpbmFsIHRyYW5zaWVudCBUZXh0UHJvdmlkZXIg dGV4dFByb3ZpZGVyID0gbmV3IEN1c3RvbU1lc3NhZ2VSZXNvdXJjZXNGYWN0b3J5KCkuY3JlYXRl SW5zdGFuY2UoZ2V0Q2xhc3MoKSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhpcyk7DQo+DQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIExpc3Q8 U2VsZWN0T3B0aW9uVmlldz4geWVzTm9BbGxMaXN0Ow0KPg0KPiAgICAgICAgICAgICAgICAgcHJp dmF0ZSBMaXN0PFNlbGVjdE9wdGlvblZpZXc+IHllc05vTGlzdDsNCj4NCj4gICAgICAgICAgICAg ICAgIHB1YmxpYyBzdGF0aWMgQm9vdHN0cmFwU3VwcG9ydCBnZXRJbnN0YW5jZSgpIHsNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5TVEFOQ0U7DQo+ICAgICAgICAg ICAgICAgICB9DQo+DQo+ICAgICAgICAgICAgICAgICAvKioNCj4gICAgICAgICAgICAgICAgICog VGhpcyBpcyB1c2VkIHRvIGhlbHAgZ2VuZXJhdGUgdGhlIHllc25vYWxsIG9wdGlvbnMgZG9qbyBz dHJpbmcNCj4gICAgICAgICAgICAgICAgICovDQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIHN0 YXRpYyBmaW5hbCBpbnQgWU5BX05PID0gQ29tbW9uVXRpbHMuRE9fTk9UX1NIT1dfRU5UUklFUzsN Cj4gICAgICAgICAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBZTkFfWUVTID0gQ29t bW9uVXRpbHMuU0hPV19FTlRSSUVTOw0KPiAgICAgICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMg ZmluYWwgaW50IFlOQV9BTEwgPSANCj4gQ29tbW9uVXRpbHMuU0hPV19BTExfRU5UUklFUzsNCj4N Cj4gICAgICAgICAgICAgICAgIC8vIE9wZXJhdGluZyBTeXN0ZW0gZGVzY3JpcHRpb24NCj4gICAg ICAgICAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdW10gWUVTTk9BTExERVND UklQVElPTlMgPSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgWU5BX1lFUyArICIiLCBNYXN0ZXJDb2RlRGVzY3JpcHRpb25LZXlzLk1DX1lFU05P QUxMX1lFUyB9LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IFlOQV9OTyArICIiLCBNYXN0ZXJDb2RlRGVzY3JpcHRpb25LZXlzLk1DX1lFU05PQUxM X05PIH0sDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgWU5BX0FMTCArICIiLCBNYXN0ZXJDb2RlRGVzY3JpcHRpb25LZXlzLk1DX1lFU05PQUxMX0FM TCB9IH07DQo+ICAgICAgICAgICAgICAgICAvLyBPcGVyYXRpbmcgU3lzdGVtIGRlc2NyaXB0aW9u DQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXVtdIFlFU05P REVTQ1JJUFRJT05TID0geyB7IFlOQV9ZRVMgKyAiIiwgTWFzdGVyQ29kZURlc2NyaXB0aW9uS2V5 cy5NQ19ZRVNOT0FMTF9ZRVMgfSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyBZTkFfTk8gKyAiIiwgDQo+IE1hc3RlckNvZGVEZXNjcmlwdGlvbktl eXMuTUNfWUVTTk9BTExfTk8gfSB9Ow0KPg0KPiAgICAgICAgICAgICAgICAgLyoqDQo+ICAgICAg ICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIGJ5IFN0cnV0 cywgaXQgaW5qZWN0cyB0aGUgdmFsdWUgb2YgdGhlDQo+ICAgICAgICAgICAgICAgICAqIFN0cnV0 c0NvbnN0YW50cy5TVFJVVFNfQ1VTVE9NX0kxOE5fUkVTT1VSQ0VTLiBUaGUgdmFsdWVzIGlzIHNl dCBhcyB0aGUgc3RhdGljDQo+ICAgICAgICAgICAgICAgICAqIGZpZWxkIG9mIHRoZSBDdXN0b21M b2NhbGl6ZWRUZXh0VXRpbCBjbGFzcywgd2hpY2ggaXMgbmVlZGVkIHdoZW4gbG9hZGluZw0KPiAg ICAgICAgICAgICAgICAgKiBtZXNzYWdlcyBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGVzLg0KPiAg ICAgICAgICAgICAgICAgKg0KPiAgICAgICAgICAgICAgICAgICogQHBhcmFtIHN0cnV0c0N1c3Rv bUkxOG5SZXNvdXJjZXMgVGhlIHByb3BlcnR5IHZhbHVlDQo+ICAgICAgICAgICAgICAgICAqLw0K PiAgICAgICAgICAgICAgICAgQEluamVjdChTdHJ1dHNDb25zdGFudHMuU1RSVVRTX0NVU1RPTV9J MThOX1JFU09VUkNFUykNCj4gICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFN0cnV0c0N1 c3RvbUkxOG5SZXNvdXJjZXMoU3RyaW5nIHN0cnV0c0N1c3RvbUkxOG5SZXNvdXJjZXMpIHsNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ3VzdG9tTG9jYWxpemVkVGV4dFV0 aWwuZ2V0U3RydXRzQ3VzdG9tSTE4blJlc291cmNlcygpID09IG51bGwpIHsNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tTG9jYWxpemVkVGV4 dFV0aWwuc2V0U3RydXRzQ3VzdG9tSTE4blJlc291cmNlcyhzdHJ1dHNDdXN0b21JMThuUmVzb3Vy Y2VzKTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q3VzdG9tTG9jYWxpemVkVGV4dFV0aWwuY2xlYXJEZWZhdWx0UmVzb3VyY2VCdW5kbGVzKCk7DQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgfQ0K Pg0KPiAgICAgICAgICAgICAgICAgLyoqDQo+ICAgICAgICAgICAgICAgICAqIEBzZWUgY29tLm9w ZW5zeW1waG9ueS54d29yazIuQWN0aW9uU3VwcG9ydCNnZXRUZXh0KFN0cmluZykNCj4gICAgICAg ICAgICAgICAgICovDQo+ICAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoU3Ry aW5nIGFUZXh0TmFtZSkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0ZXh0UHJvdmlkZXIuZ2V0VGV4dChhVGV4dE5hbWUpOw0KPiAgICAgICAgICAgICAgICAgfQ0K Pg0KPiAgICAgICAgICAgICAgICAgLyoqDQo+ICAgICAgICAgICAgICAgICAqIFRoaXMgZ2VuZXJh dGVzIHRoZSBCb290c3RyYXAgU3RyaW5nIGZvciB0aGUgWWVzTm9BbGwgT3B0aW9ucy4NCj4gICAg ICAgICAgICAgICAgICovDQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIHZvaWQgY3JlYXRlQXV0 b2NvbXBsZXRlVmlld0xpc3RGb3JZZXNOb0FsbE9wdGlvbnNNYXAoKSB7DQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeWVzTm9BbGxMaXN0ID0gbmV3IEFycmF5TGlzdDxTZWxlY3RP cHRpb25WaWV3PigpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoU3Ry aW5nW10geWVzTm9BbGxPcHRpb24gOiBZRVNOT0FMTERFU0NSSVBUSU9OUykgew0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RPcHRpb25WaWV3 IHNlbGVjdE9wdGlvblZpZXcgPSBuZXcgU2VsZWN0T3B0aW9uVmlldygpOw0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RPcHRpb25WaWV3LnNl dExhYmVsKGdldFRleHQoeWVzTm9BbGxPcHRpb25bMV0pKTsNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3B0aW9uVmlldy5zZXRJZCh5ZXNO b0FsbE9wdGlvblswXSk7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHllc05vQWxsTGlzdC5hZGQoc2VsZWN0T3B0aW9uVmlldyk7DQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgfQ0KPg0KPiAgICAg ICAgICAgICAgICAgLyoqDQo+ICAgICAgICAgICAgICAgICAqIFRoaXMgZ2VuZXJhdGVzIHRoZSBC b290c3RyYXAgU3RyaW5nIGZvciB0aGUgWWVzTm9BbGwgT3B0aW9ucy4NCj4gICAgICAgICAgICAg ICAgICovDQo+ICAgICAgICAgICAgICAgICBwcml2YXRlIHZvaWQgY3JlYXRlQXV0b2NvbXBsZXRl Vmlld0xpc3RGb3JZZXNOb09wdGlvbnNNYXAoKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeWVzTm9MaXN0ID0gbmV3IEFycmF5TGlzdDxTZWxlY3RPcHRpb25WaWV3PigpOw0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nW10geWVzTm9PcHRp b24gOiBZRVNOT0RFU0NSSVBUSU9OUykgew0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTZWxlY3RPcHRpb25WaWV3IHNlbGVjdE9wdGlvblZpZXcgPSBu ZXcgU2VsZWN0T3B0aW9uVmlldygpOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxlY3RPcHRpb25WaWV3LnNldExhYmVsKGdldFRleHQoeWVzTm9P cHRpb25bMV0pKTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZWN0T3B0aW9uVmlldy5zZXRJZCh5ZXNOb09wdGlvblswXSk7DQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc05vTGlzdC5hZGQoc2Vs ZWN0T3B0aW9uVmlldyk7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiAg ICAgICAgICAgICAgICAgfQ0KPg0KPiAgICAgICAgICAgICAgICAgLyoqDQo+ICAgICAgICAgICAg ICAgICAqIExvYWQgdGhlIFllcy9Oby9BbGwgb3B0aW9uc2V0IG1hcA0KPiAgICAgICAgICAgICAg ICAgKi8NCj4gICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGxvYWRZZXNOb0FsbE9wdGlvbnNN YXAoKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQXV0b2NvbXBs ZXRlVmlld0xpc3RGb3JZZXNOb0FsbE9wdGlvbnNNYXAoKTsNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjcmVhdGVBdXRvY29tcGxldGVWaWV3TGlzdEZvclllc05vT3B0aW9uc01h cCgpOw0KPiAgICAgICAgICAgICAgICAgfQ0KPg0KPiAgICAgICAgICAgICAgICAgcHVibGljIExp c3Q8U2VsZWN0T3B0aW9uVmlldz4gZ2V0WWVzTm9BbGxMaXN0KCkgew0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiB5ZXNOb0FsbExpc3Q7DQo+ICAgICAgICAgICAgICAg ICB9DQo+DQo+ICAgICAgICAgICAgICAgICBwdWJsaWMgTGlzdDxTZWxlY3RPcHRpb25WaWV3PiBn ZXRZZXNOb0xpc3QoKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHllc05vTGlzdDsNCj4gICAgICAgICAgICAgICAgIH0NCj4NCj4gfQ0KPg0KPiBLaW5kIHJlZ2Fy ZHMsDQo+DQo+IE5hdGUgS2Vya2hvZnMNCj4NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRvIHVuc3Vic2Ny aWJlLCBlLW1haWw6IHVzZXItdW5zdWJzY3JpYmVAc3RydXRzLmFwYWNoZS5vcmcNCj4gRm9yIGFk ZGl0aW9uYWwgY29tbWFuZHMsIGUtbWFpbDogdXNlci1oZWxwQHN0cnV0cy5hcGFjaGUub3JnDQo+ DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KVG8gdW5zdWJzY3JpYmUsIGUtbWFpbDogdXNlci11bnN1YnNjcmli ZUBzdHJ1dHMuYXBhY2hlLm9yZw0KRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMsIGUtbWFpbDogdXNl ci1oZWxwQHN0cnV0cy5hcGFjaGUub3JnDQoNCg== DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXItdW5zdWJz Y3JpYmVAc3RydXRzLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h aWw6IHVzZXItaGVscEBzdHJ1dHMuYXBhY2hlLm9yZw0K