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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.