Re: [jgroups-users] How to hijack a JGroups channel inside Infinispan ... (and get away with it !)
Questions/problems related to using JGroups <[email protected]> Tue, 14 Jan 2020 15:45:07 +0100
| Newsgroups | gmane.comp.java.javagroups.general |
|---|---|
| Message-ID | <mailman.1563.1579013130.1535.javagroups-users@lists.sourceforge.net> |
--000000000000123ff2059c1aa44d Content-Type: multipart/alternative; boundary="000000000000123ff0059c1aa44b" --000000000000123ff0059c1aa44b Content-Type: text/plain; charset="UTF-8" Not missing any ctors, I am happy with JChannel(InputStream) it makes more sense than URL. Infinispan 9.4.16 to 10.1.0.Final. I rewrote the bootstrap as you suggested but the fork channel is still logging the same warn message. 2020-01-14T15:43:06,077 WARN [jgroups-5,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:15,416 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:15,446 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:15,466 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:15,491 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:15,512 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:16,081 WARN [jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:26,079 WARN [jgroups-16,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] 2020-01-14T15:43:36,080 WARN [jgroups-17,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not found; discarding message [] I will reserve some time later this afternoon to put together a small reproducer. On Tue, Jan 14, 2020 at 1:17 PM Questions/problems related to using JGroups <[email protected]> wrote: > Why do you create your own base channel? You should fetch the existing > JChannel from Infinispan and create a ForkChannel over it. > Which ctor are you missing? new JChannel(InputStream) still exists! > Cheers, > > On 13.01.20 16:37, Questions/problems related to using JGroups wrote: > > Hey all, > > > > So I recently upgraded to Infinispan 10.1.0.Final and it came with a few > > surprises with the JGroups update, a few of the constructors in JChannel > > are no longer available - it was fast to replace this with > > org.jgroups.conf.XmlConfigurator , however, the hijacked channel on the > > other hand seems to be broken / non functional (see logs below).. before > > digging into the Infinispan Jgroups bootstrap code too far I thought it > > might be worth reaching out here just in case someone has already run > > into this problem. > > > > 2020-01-13T16:11:15,444 WARN [jgroups-6,space-service-1] > > (org.jgroups.protocols.FORK) space-service-1: fork-channel for > > id=lead-hijacker not found; discarding message [] > > 2020-01-13T16:11:15,466 WARN [jgroups-6,space-service-1] > > (org.jgroups.protocols.FORK) space-service-1: fork-channel for > > id=lead-hijacker not found; discarding message [] > > 2020-01-13T16:11:15,490 WARN [jgroups-6,space-service-1] > > (org.jgroups.protocols.FORK) space-service-1: fork-channel for > > id=lead-hijacker not found; discarding message [] > > 2020-01-13T16:11:15,512 WARN [jgroups-6,space-service-1] > > (org.jgroups.protocols.FORK) space-service-1: fork-channel for > > id=lead-hijacker not found; discarding message [] > > 2020-01-13T16:11:15,917 WARN [jgroups-6,space-service-1] > > (org.jgroups.protocols.FORK) space-service-1: fork-channel for > > id=lead-hijacker not found; discarding message [] > > > > Cheers, > > > > -- > > Johno Crawford > > > > > > _______________________________________________ > > javagroups-users mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/javagroups-users > > > > -- > Bela Ban | http://www.jgroups.org > > > > _______________________________________________ > javagroups-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/javagroups-users > -- Johno Crawford --000000000000123ff0059c1aa44b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Not missing any ctors, I am happy with JChannel(InputStrea= m) it makes more sense than URL.<div><br></div><div>Infinispan 9.4.16 to=C2= =A010.1.0.Final.</div><div><br></div><div>I rewrote the bootstrap as you su= ggested but the fork channel is still logging the same warn message.</div><= div><br></div><div>2020-01-14T15:43:06,077 WARN =C2=A0[jgroups-5,proxy-serv= ice-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=3Dlead-h= ijacker not found; discarding message []<br>2020-01-14T15:43:15,416 WARN = =C2=A0[jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: = fork-channel for id=3Dlead-hijacker not found; discarding message []<br>202= 0-01-14T15:43:15,446 WARN =C2=A0[jgroups-11,proxy-service-1-4894] (org.jgro= ups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not found; di= scarding message []<br>2020-01-14T15:43:15,466 WARN =C2=A0[jgroups-11,proxy= -service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=3Dl= ead-hijacker not found; discarding message []<br>2020-01-14T15:43:15,491 WA= RN =C2=A0[jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) nul= l: fork-channel for id=3Dlead-hijacker not found; discarding message []<br>= 2020-01-14T15:43:15,512 WARN =C2=A0[jgroups-11,proxy-service-1-4894] (org.j= groups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not found;= discarding message []<br>2020-01-14T15:43:16,081 WARN =C2=A0[jgroups-11,pr= oxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id= =3Dlead-hijacker not found; discarding message []<br>2020-01-14T15:43:26,07= 9 WARN =C2=A0[jgroups-16,proxy-service-1-4894] (org.jgroups.protocols.FORK)= null: fork-channel for id=3Dlead-hijacker not found; discarding message []= <br>2020-01-14T15:43:36,080 WARN =C2=A0[jgroups-17,proxy-service-1-4894] (o= rg.jgroups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not fo= und; discarding message []<br></div><div><br></div><div>I will reserve some= time later this afternoon to put together a small reproducer.</div></div><= br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue,= Jan 14, 2020 at 1:17 PM Questions/problems related to using JGroups <<a= href=3D"mailto:[email protected]">javagroups-users@li= sts.sourceforge.net</a>> wrote:<br></div><blockquote class=3D"gmail_quot= e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)= ;padding-left:1ex">Why do you create your own base channel? You should fetc= h the existing <br> JChannel from Infinispan and create a ForkChannel over it.<br> Which ctor are you missing? new JChannel(InputStream) still exists!<br> Cheers,<br> <br> On 13.01.20 16:37, Questions/problems related to using JGroups wrote:<br> > Hey all,<br> > <br> > So I recently upgraded to Infinispan 10.1.0.Final and it came with a f= ew <br> > surprises with the JGroups update, a few of the constructors in JChann= el <br> > are no longer available - it was fast to replace this with <br> > org.jgroups.conf.XmlConfigurator , however, the hijacked channel on th= e <br> > other hand seems to be broken / non functional (see logs below).. befo= re <br> > digging into the Infinispan Jgroups bootstrap code too far I thought i= t <br> > might be worth reaching out here just in case someone has already run = <br> > into this problem.<br> > <br> > 2020-01-13T16:11:15,444 WARN =C2=A0[jgroups-6,space-service-1] <br> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br> > id=3Dlead-hijacker not found; discarding message []<br> > 2020-01-13T16:11:15,466 WARN =C2=A0[jgroups-6,space-service-1] <br> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br> > id=3Dlead-hijacker not found; discarding message []<br> > 2020-01-13T16:11:15,490 WARN =C2=A0[jgroups-6,space-service-1] <br> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br> > id=3Dlead-hijacker not found; discarding message []<br> > 2020-01-13T16:11:15,512 WARN =C2=A0[jgroups-6,space-service-1] <br> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br> > id=3Dlead-hijacker not found; discarding message []<br> > 2020-01-13T16:11:15,917 WARN =C2=A0[jgroups-6,space-service-1] <br> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br> > id=3Dlead-hijacker not found; discarding message []<br> > <br> > Cheers,<br> > <br> > -- <br> > Johno Crawford<br> > <br> > <br> > _______________________________________________<br> > javagroups-users mailing list<br> > <a href=3D"mailto:[email protected]" target=3D"_b= lank">[email protected]</a><br> > <a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-use= rs" rel=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/list= s/listinfo/javagroups-users</a><br> > <br> <br> -- <br> Bela Ban | <a href=3D"http://www.jgroups.org" rel=3D"noreferrer" target=3D"= _blank">http://www.jgroups.org</a><br> <br> <br> <br> _______________________________________________<br> javagroups-users mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank"= >[email protected]</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-users" r= el=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/lis= tinfo/javagroups-users</a><br> </blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"= class=3D"gmail_signature">Johno Crawford</div> --000000000000123ff0059c1aa44b-- --000000000000123ff2059c1aa44d Content-Type: text/x-java; charset="US-ASCII"; name="JGroupsClusterPeer.java" Content-Disposition: attachment; filename="JGroupsClusterPeer.java" Content-Transfer-Encoding: base64 Content-ID: <f_k5dzlg320> X-Attachment-Id: f_k5dzlg320 cGFja2FnZSBjb20uc3VsYWtlLmg0ay5jb21tb24ub3JiaXQuamdyb3VwczsKCmltcG9ydCBjbG91 ZC5vcmJpdC5hY3RvcnMuY2x1c3Rlci5EaXN0cmlidXRlZE1hcDsKaW1wb3J0IGNsb3VkLm9yYml0 LmFjdG9ycy5jbHVzdGVyLk1lc3NhZ2VMaXN0ZW5lcjsKaW1wb3J0IGNsb3VkLm9yYml0LmFjdG9y cy5jbHVzdGVyLk5vZGVBZGRyZXNzOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLmNsdXN0ZXIu Tm9kZUFkZHJlc3NJbXBsOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLmNsdXN0ZXIuVmlld0xp c3RlbmVyOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLnJ1bnRpbWUuUmVtb3RlS2V5OwppbXBv cnQgY2xvdWQub3JiaXQuY29uY3VycmVudC5UYXNrOwppbXBvcnQgY2xvdWQub3JiaXQuZXhjZXB0 aW9uLlVuY2hlY2tlZEV4Y2VwdGlvbjsKaW1wb3J0IGNvbS5zdWxha2UuY29tbW9uLnV0aWwuaW8u SW9VdGlsczsKaW1wb3J0IGNvbS5zdWxha2UuaDRrLmNvbW1vbi51dGlsLlN0cmluZ3NVdGlsczsK aW1wb3J0IG9yZy5pbmZpbmlzcGFuLkFkdmFuY2VkQ2FjaGU7CmltcG9ydCBvcmcuaW5maW5pc3Bh bi5DYWNoZTsKaW1wb3J0IG9yZy5pbmZpbmlzcGFuLmNvbW1vbnMuY29uZmlndXJhdGlvbi5DbGFz c1doaXRlTGlzdDsKaW1wb3J0IG9yZy5pbmZpbmlzcGFuLmNvbW1vbnMubWFyc2hhbGwuSmF2YVNl cmlhbGl6YXRpb25NYXJzaGFsbGVyOwppbXBvcnQgb3JnLmluZmluaXNwYW4uY29uZmlndXJhdGlv bi5jYWNoZS5DYWNoZU1vZGU7CmltcG9ydCBvcmcuaW5maW5pc3Bhbi5jb25maWd1cmF0aW9uLmNh Y2hlLkNsdXN0ZXJpbmdDb25maWd1cmF0aW9uQnVpbGRlcjsKaW1wb3J0IG9yZy5pbmZpbmlzcGFu LmNvbmZpZ3VyYXRpb24uY2FjaGUuQ29uZmlndXJhdGlvbkJ1aWxkZXI7CmltcG9ydCBvcmcuaW5m aW5pc3Bhbi5jb25maWd1cmF0aW9uLmdsb2JhbC5HbG9iYWxDb25maWd1cmF0aW9uQnVpbGRlcjsK aW1wb3J0IG9yZy5pbmZpbmlzcGFuLm1hbmFnZXIuRGVmYXVsdENhY2hlTWFuYWdlcjsKaW1wb3J0 IG9yZy5pbmZpbmlzcGFuLnJlbW90aW5nLnRyYW5zcG9ydC5qZ3JvdXBzLkpHcm91cHNUcmFuc3Bv cnQ7CmltcG9ydCBvcmcuamdyb3Vwcy5BZGRyZXNzOwppbXBvcnQgb3JnLmpncm91cHMuTWVzc2Fn ZTsKaW1wb3J0IG9yZy5qZ3JvdXBzLlJlY2VpdmVyQWRhcHRlcjsKaW1wb3J0IG9yZy5qZ3JvdXBz LlZpZXc7CmltcG9ydCBvcmcuamdyb3Vwcy5mb3JrLkZvcmtDaGFubmVsOwppbXBvcnQgb3JnLmpn cm91cHMuam14LkpteENvbmZpZ3VyYXRvcjsKaW1wb3J0IG9yZy5qZ3JvdXBzLnByb3RvY29scy5G UkFHMjsKaW1wb3J0IG9yZy5qZ3JvdXBzLnByb3RvY29scy5GUkFHMzsKaW1wb3J0IG9yZy5qZ3Jv dXBzLnN0YWNrLlByb3RvY29sOwppbXBvcnQgb3JnLmpncm91cHMuc3RhY2suUHJvdG9jb2xTdGFj azsKaW1wb3J0IG9yZy5qZ3JvdXBzLnV0aWwuTWVzc2FnZUJhdGNoOwppbXBvcnQgb3JnLmpncm91 cHMudXRpbC5VVUlEOwppbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKaW1wb3J0IG9yZy5zbGY0ai5M b2dnZXJGYWN0b3J5OwoKaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CmltcG9ydCBqYXZhLmxh bmcubWFuYWdlbWVudC5NYW5hZ2VtZW50RmFjdG9yeTsKaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1l ZFVSTEV4Y2VwdGlvbjsKaW1wb3J0IGphdmEubmV0LlVSTDsKaW1wb3J0IGphdmEubmlvLmZpbGUu UGF0aHM7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51dGlsLk9iamVjdHM7Cmlt cG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKaW1wb3J0IGphdmEu dXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yOwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRm9y a0pvaW5UYXNrOwoKcHVibGljIGNsYXNzIEpHcm91cHNDbHVzdGVyUGVlciBpbXBsZW1lbnRzIEV4 dGVuZGVkQ2x1c3RlclBlZXIgewoKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dn ZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihKR3JvdXBzQ2x1c3RlclBlZXIuY2xhc3MpOwoK ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBESVNUX0FTWU5DX0NPTkZJR1VSQVRJT05f TkFNRSA9ICJkaXN0QXN5bmNDYWNoZSI7CgogICAgcHJpdmF0ZSBmaW5hbCBFeGVjdXRvciBleGVj dXRvcjsKICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiB6ZXJvQ2FwYWNpdHlGYWN0b3I7CgogICAg cHJpdmF0ZSBpbnQgcG9ydFJhbmdlTGVuZ3RoID0gMTAwMDsKICAgIHByaXZhdGUgVGFzazxBZGRy ZXNzPiBzdGFydEZ1dHVyZTsKICAgIHByaXZhdGUgRm9ya0NoYW5uZWwgY2hhbm5lbDsKICAgIHBy aXZhdGUgRGVmYXVsdENhY2hlTWFuYWdlciBjYWNoZU1hbmFnZXI7CiAgICBwcml2YXRlIE5vZGVJ bmZvIGxvY2FsOwoKICAgIHByaXZhdGUgTm9kZUluZm8gbWFzdGVyOwogICAgcHJpdmF0ZSBmaW5h bCBNYXA8QWRkcmVzcywgTm9kZUluZm8+IG5vZGVNYXAgPSBuZXcgQ29uY3VycmVudEhhc2hNYXA8 PigpOwogICAgcHJpdmF0ZSBmaW5hbCBNYXA8Tm9kZUFkZHJlc3MsIE5vZGVJbmZvPiBub2RlTWFw MiA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDw+KCk7CiAgICBwcml2YXRlIFZpZXdMaXN0ZW5lciB2 aWV3TGlzdGVuZXI7CiAgICBwcml2YXRlIE1lc3NhZ2VMaXN0ZW5lciBtZXNzYWdlTGlzdGVuZXI7 CgogICAgcHJpdmF0ZSBTdHJpbmcgamdyb3Vwc0NvbmZpZyA9ICJjbGFzc3BhdGg6L2NvbmYvdWRw LWpncm91cHMueG1sIjsKCiAgICBwcml2YXRlIGJvb2xlYW4gbmFtZUJhc2VkVXBkUG9ydCA9IHRy dWU7CgogICAgcHVibGljIEpHcm91cHNDbHVzdGVyUGVlcihmaW5hbCBTdHJpbmcgamdyb3Vwc0Nv bmZpZywgZmluYWwgRXhlY3V0b3IgZXhlY3V0b3IsIGZpbmFsIGJvb2xlYW4gemVyb0NhcGFjaXR5 RmFjdG9yKSB7CiAgICAgICAgdGhpcy5leGVjdXRvciA9IGV4ZWN1dG9yOwogICAgICAgIHRoaXMu amdyb3Vwc0NvbmZpZyA9IGpncm91cHNDb25maWc7CiAgICAgICAgdGhpcy56ZXJvQ2FwYWNpdHlG YWN0b3IgPSB6ZXJvQ2FwYWNpdHlGYWN0b3I7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJs aWMgTm9kZUFkZHJlc3MgbG9jYWxBZGRyZXNzKCkgewogICAgICAgIHN5bmMoKTsKICAgICAgICBy ZXR1cm4gbG9jYWwubm9kZUFkZHJlc3M7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMg dm9pZCByZWdpc3RlclZpZXdMaXN0ZW5lcihmaW5hbCBWaWV3TGlzdGVuZXIgdmlld0xpc3RlbmVy KSB7CiAgICAgICAgdGhpcy52aWV3TGlzdGVuZXIgPSB2aWV3TGlzdGVuZXI7CiAgICB9CgogICAg QE92ZXJyaWRlCiAgICBwdWJsaWMgdm9pZCByZWdpc3Rlck1lc3NhZ2VSZWNlaXZlcihmaW5hbCBN ZXNzYWdlTGlzdGVuZXIgbWVzc2FnZUxpc3RlbmVyKSB7CiAgICAgICAgdGhpcy5tZXNzYWdlTGlz dGVuZXIgPSBtZXNzYWdlTGlzdGVuZXI7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg Y2xhc3MgTm9kZUluZm8gewogICAgICAgIHByaXZhdGUgZmluYWwgQWRkcmVzcyBhZGRyZXNzOwog ICAgICAgIHByaXZhdGUgZmluYWwgTm9kZUFkZHJlc3Mgbm9kZUFkZHJlc3M7CgogICAgICAgIE5v ZGVJbmZvKGZpbmFsIEFkZHJlc3MgYWRkcmVzcykgewogICAgICAgICAgICB0aGlzLmFkZHJlc3Mg PSBhZGRyZXNzOwogICAgICAgICAgICBmaW5hbCBVVUlEIGpncm91cHNVVUlEID0gKFVVSUQpIGFk ZHJlc3M7CiAgICAgICAgICAgIHRoaXMubm9kZUFkZHJlc3MgPSBuZXcgTm9kZUFkZHJlc3NJbXBs KG5ldyBqYXZhLnV0aWwuVVVJRChqZ3JvdXBzVVVJRC5nZXRNb3N0U2lnbmlmaWNhbnRCaXRzKCks IGpncm91cHNVVUlELmdldExlYXN0U2lnbmlmaWNhbnRCaXRzKCkpKTsKICAgICAgICB9CgogICAg ICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qg bykgewogICAgICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg aWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNl OwoKICAgICAgICAgICAgZmluYWwgTm9kZUluZm8gbm9kZUluZm8gPSAoTm9kZUluZm8pIG87Cgog ICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5lcXVhbHMobm9kZUluZm8uYWRkcmVzcyk7CiAgICAg ICAgfQoKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewog ICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5oYXNoQ29kZSgpOwogICAgICAgIH0KICAgIH0KCiAg ICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBUYXNrPD8+IGpvaW4oZmluYWwgU3RyaW5nIGNsdXN0ZXJO YW1lLCBmaW5hbCBTdHJpbmcgbm9kZU5hbWUpIHsKICAgICAgICBzdGFydEZ1dHVyZSA9IG5ldyBU YXNrPD4oKTsKICAgICAgICBmaW5hbCBGb3JrSm9pblRhc2s8Vm9pZD4gZiA9IEZvcmtKb2luVGFz ay5hZGFwdCgoKSAtPgogICAgICAgIHsKICAgICAgICAgICAgZmluYWwgSW5wdXRTdHJlYW0gY29u ZmlnSW5wdXRTdHJlYW0gPSBjb25maWdUb1VSTChnZXRKZ3JvdXBzQ29uZmlnKCkpLm9wZW5TdHJl YW0oKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGlmIChTeXN0ZW0uZ2V0UHJv cGVydHkoImphdmEubmV0LnByZWZlcklQdjRTdGFjayIsIG51bGwpID09IG51bGwpIHsKICAgICAg ICAgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoImphdmEubmV0LnByZWZlcklQdjRTdGFj ayIsICJ0cnVlIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZmluYWwgR2xv YmFsQ29uZmlndXJhdGlvbkJ1aWxkZXIgZ2xvYmFsQ29uZmlndXJhdGlvbkJ1aWxkZXIgPSBHbG9i YWxDb25maWd1cmF0aW9uQnVpbGRlci5kZWZhdWx0Q2x1c3RlcmVkQnVpbGRlcigpOwogICAgICAg ICAgICAgICAgaWYgKHplcm9DYXBhY2l0eUZhY3RvcikgewogICAgICAgICAgICAgICAgICAgIGds b2JhbENvbmZpZ3VyYXRpb25CdWlsZGVyLnplcm9DYXBhY2l0eU5vZGUodHJ1ZSk7CiAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgQ2xhc3NXaGl0ZUxpc3QgY2xhc3NXaGl0ZUxpc3Qg PSBuZXcgQ2xhc3NXaGl0ZUxpc3QoKTsKICAgICAgICAgICAgICAgIGNsYXNzV2hpdGVMaXN0LmFk ZENsYXNzZXMoUmVtb3RlS2V5LmNsYXNzLCBOb2RlQWRkcmVzcy5jbGFzcyk7CiAgICAgICAgICAg ICAgICBjbGFzc1doaXRlTGlzdC5hZGRSZWdleHBzKCJjb21cXC5zdWxha2VcXC4qIiwgImNsb3Vk XFwub3JiaXRcXC4qIik7CiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWd1cmF0aW9uQnVpbGRl ci5jYWNoZUNvbnRhaW5lcigpLnNlcmlhbGl6YXRpb24oKS5tYXJzaGFsbGVyKG5ldyBKYXZhU2Vy aWFsaXphdGlvbk1hcnNoYWxsZXIoY2xhc3NXaGl0ZUxpc3QpKTsKCiAgICAgICAgICAgICAgICBn bG9iYWxDb25maWd1cmF0aW9uQnVpbGRlci5nbG9iYWxKbXhTdGF0aXN0aWNzKCkuYWxsb3dEdXBs aWNhdGVEb21haW5zKHRydWUpOwogICAgICAgICAgICAgICAgZ2xvYmFsQ29uZmlndXJhdGlvbkJ1 aWxkZXIudHJhbnNwb3J0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLmNsdXN0ZXJOYW1lKGNsdXN0ZXJOYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAubm9kZU5hbWUobm9kZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC5hZGRQcm9wZXJ0eShKR3JvdXBzVHJhbnNwb3J0LkNPTkZJR1VS QVRJT05fWE1MLCBTdHJpbmdzVXRpbHMuY29udmVydElucHV0U3RyZWFtVG9TdHJpbmcoY29uZmln SW5wdXRTdHJlYW0pKTsKCiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uQnVpbGRlciBidWls ZGVyID0gbmV3IENvbmZpZ3VyYXRpb25CdWlsZGVyKCk7CiAgICAgICAgICAgICAgICBDbHVzdGVy aW5nQ29uZmlndXJhdGlvbkJ1aWxkZXIgY29uZmlndXJhdGlvbkJ1aWxkZXIgPSBidWlsZGVyLmNs dXN0ZXJpbmcoKS5jYWNoZU1vZGUoQ2FjaGVNb2RlLkRJU1RfQVNZTkMpOwogICAgICAgICAgICAg ICAgaWYgKHplcm9DYXBhY2l0eUZhY3RvcikgewogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5p bmZvKCJTZXR0aW5nIGNhcGFjaXR5IGZhY3RvciB0byB6ZXJvIik7CiAgICAgICAgICAgICAgICAg ICAgY29uZmlndXJhdGlvbkJ1aWxkZXIuaGFzaCgpLmNhcGFjaXR5RmFjdG9yKDApOwogICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNhY2hlTWFuYWdlciA9IG5ldyBEZWZhdWx0Q2Fj aGVNYW5hZ2VyKGdsb2JhbENvbmZpZ3VyYXRpb25CdWlsZGVyLmRlZmF1bHRDYWNoZU5hbWUoRElT VF9BU1lOQ19DT05GSUdVUkFUSU9OX05BTUUpLmJ1aWxkKCksIGJ1aWxkZXIuYnVpbGQoKSk7Cgog ICAgICAgICAgICAgICAgaWYgKGNhY2hlTWFuYWdlci5nZXRUcmFuc3BvcnQoKSBpbnN0YW5jZW9m IEpHcm91cHNUcmFuc3BvcnQpIHsKICAgICAgICAgICAgICAgICAgICBKR3JvdXBzVHJhbnNwb3J0 IGpHcm91cHNUcmFuc3BvcnQgPSAoSkdyb3Vwc1RyYW5zcG9ydCkgY2FjaGVNYW5hZ2VyLmdldFRy YW5zcG9ydCgpOwoKICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFN0YWNrIHN0YWNrID0gakdy b3Vwc1RyYW5zcG9ydC5nZXRDaGFubmVsKCkuZ2V0UHJvdG9jb2xTdGFjaygpOwoKICAgICAgICAg ICAgICAgICAgICBDbGFzczw/IGV4dGVuZHMgUHJvdG9jb2w+IG5laWdoYm9yUHJvdG9jb2wgPSBz dGFjay5maW5kUHJvdG9jb2woRlJBRzIuY2xhc3MpICE9IG51bGwgPwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgRlJBRzIuY2xhc3MgOiBGUkFHMy5jbGFzczsKICAgICAgICAgICAgICAgICAg ICBjaGFubmVsID0gbmV3IEZvcmtDaGFubmVsKGpHcm91cHNUcmFuc3BvcnQuZ2V0Q2hhbm5lbCgp LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpamFjay1z dGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVh ZC1oaWphY2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv dG9jb2xTdGFjay5Qb3NpdGlvbi5BQk9WRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5laWdoYm9yUHJvdG9jb2wpOwoKICAgICAgICAgICAgICAgICAgICBj aGFubmVsLnNldFJlY2VpdmVyKG5ldyBSZWNlaXZlckFkYXB0ZXIoKSB7CgogICAgICAgICAgICAg ICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQg dmlld0FjY2VwdGVkKGZpbmFsIFZpZXcgdmlldykgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9WaWV3QWNjZXB0ZWQodmlldyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgICAgICAgICAgICBwdWJs aWMgdm9pZCByZWNlaXZlKGZpbmFsIE1lc3NhZ2VCYXRjaCBiYXRjaCkgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgVGFzay5ydW5Bc3luYygoKSAtPiB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9yIChNZXNzYWdlIG1lc3NhZ2UgOiBiYXRjaCkgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9SZWNlaXZlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZXgpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3IgcmVjZWl2aW5nIGJhdGNoZWQg bWVzc2FnZSIsIGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0sIGV4ZWN1dG9yKS5leGNlcHRpb25hbGx5KChlKSAtPiB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJFcnJvciByZWNlaXZpbmcgbWVzc2FnZSIsIGUpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9p ZCByZWNlaXZlKGZpbmFsIE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUYXNrLnJ1bkFzeW5jKCgpIC0+IGRvUmVjZWl2ZShtc2cpLCBleGVjdXRvcikuZXhjZXB0aW9u YWxseSgoZSkgLT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJv cigiRXJyb3IgcmVjZWl2aW5nIG1lc3NhZ2UiLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAg ICAgICAgICAgIEpteENvbmZpZ3VyYXRvci5yZWdpc3RlckNoYW5uZWwoakdyb3Vwc1RyYW5zcG9y dC5nZXRDaGFubmVsKCksIE1hbmFnZW1lbnRGYWN0b3J5LmdldFBsYXRmb3JtTUJlYW5TZXJ2ZXIo KSwgIm9yZy5qZ3JvdXBzIiwgY2x1c3Rlck5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgfQoK ICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZ2V0IGEgY2FjaGUsIGFueSBjYWNoZSB0byBmb3Jj ZSB0aGUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgICAgICAgIGNhY2hlTWFuYWdlci5nZXRDYWNo ZSgiZGlzdHJpYnV0ZWREaXJlY3RvcnkiKTsKCiAgICAgICAgICAgICAgICBjaGFubmVsLmNvbm5l Y3QoY2x1c3Rlck5hbWUpOwogICAgICAgICAgICAgICAgbG9jYWwgPSBuZXcgTm9kZUluZm8oY2hh bm5lbC5nZXRBZGRyZXNzKCkpOwogICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJlZ2lzdGVy aW5nIHRoZSBsb2NhbCBhZGRyZXNzIik7CiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiRG9u ZSB3aXRoIEpHcm91cHMgaW5pdGlhbGl6YXRpb24iKTsKCiAgICAgICAgICAgICAgICBzdGFydEZ1 dHVyZS5jb21wbGV0ZShsb2NhbC5hZGRyZXNzKTsKICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwg RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3IgZHVyaW5n IEpHcm91cHMgaW5pdGlhbGl6YXRpb24iLCBlKTsKICAgICAgICAgICAgICAgIHN0YXJ0RnV0dXJl LmNvbXBsZXRlRXhjZXB0aW9uYWxseShlKTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAg ICAgICAgICAgIElvVXRpbHMuc2lsZW50bHlDbG9zZShjb25maWdJbnB1dFN0cmVhbSk7CiAgICAg ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfSk7CiAgICAgICAgZi5m b3JrKCk7CiAgICAgICAgcmV0dXJuIHN0YXJ0RnV0dXJlOwogICAgfQoKICAgIHByaXZhdGUgVVJM IGNvbmZpZ1RvVVJMKGZpbmFsIFN0cmluZyBqZ3JvdXBzQ29uZmlnKSB0aHJvd3MgTWFsZm9ybWVk VVJMRXhjZXB0aW9uIHsKICAgICAgICBpZiAoamdyb3Vwc0NvbmZpZy5zdGFydHNXaXRoKCJjbGFz c3BhdGg6IikpIHsKICAgICAgICAgICAgLy8gY2xhc3NwYXRoIHJlc291cmNlCiAgICAgICAgICAg IGZpbmFsIFN0cmluZyByZXNvdXJjZVBhdGggPSBqZ3JvdXBzQ29uZmlnLnN1YnN0cmluZygiY2xh c3NwYXRoOiIubGVuZ3RoKCkpOwogICAgICAgICAgICBmaW5hbCBVUkwgcmVzb3VyY2UgPSBnZXRD bGFzcygpLmdldFJlc291cmNlKHJlc291cmNlUGF0aCk7CiAgICAgICAgICAgIGlmIChyZXNvdXJj ZSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhj ZXB0aW9uKCJDYW4ndCBmaW5kIGNsYXNzcGF0aCByZXNvdXJjZTogIiArIHJlc291cmNlUGF0aCk7 CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgIH0KICAg ICAgICBpZiAoIWpncm91cHNDb25maWcuY29udGFpbnMoIjoiKSkgewogICAgICAgICAgICAvLyBu b3JtYWwgZmlsZQogICAgICAgICAgICByZXR1cm4gUGF0aHMuZ2V0KGpncm91cHNDb25maWcpLnRv VXJpKCkudG9VUkwoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBVUkwoamdyb3Vwc0Nv bmZpZyk7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgdm9pZCBsZWF2ZSgpIHsKICAg ICAgICBjaGFubmVsLmNsb3NlKCk7CiAgICAgICAgY2hhbm5lbCA9IG51bGw7CiAgICAgICAgY2Fj aGVNYW5hZ2VyLnN0b3AoKTsKICAgIH0KCiAgICAvLyBlbnN1cmVzIHRoYXQgdGhlIGNoYW5uZWwg aXMgY29ubmVjdGVkCiAgICBwcml2YXRlIHZvaWQgc3luYygpIHsKICAgICAgICBpZiAoc3RhcnRG dXR1cmUgIT0gbnVsbCAmJiAhc3RhcnRGdXR1cmUuaXNEb25lKCkpIHsKICAgICAgICAgICAgc3Rh cnRGdXR1cmUuam9pbigpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHZvaWQgZG9WaWV3 QWNjZXB0ZWQoZmluYWwgVmlldyB2aWV3KSB7CiAgICAgICAgZmluYWwgQ29uY3VycmVudEhhc2hN YXA8QWRkcmVzcywgTm9kZUluZm8+IG5ld05vZGVzID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4o dmlldy5zaXplKCkpOwogICAgICAgIGZpbmFsIENvbmN1cnJlbnRIYXNoTWFwPE5vZGVBZGRyZXNz LCBOb2RlSW5mbz4gbmV3Tm9kZXMyID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4odmlldy5zaXpl KCkpOwogICAgICAgIGZvciAoZmluYWwgQWRkcmVzcyBhIDogdmlldykgewogICAgICAgICAgICBO b2RlSW5mbyBpbmZvID0gbm9kZU1hcC5nZXQoYSk7CiAgICAgICAgICAgIGlmIChpbmZvID09IG51 bGwpIHsKICAgICAgICAgICAgICAgIGluZm8gPSBuZXcgTm9kZUluZm8oYSk7CiAgICAgICAgICAg IH0KICAgICAgICAgICAgbmV3Tm9kZXMucHV0KGEsIGluZm8pOwogICAgICAgICAgICBuZXdOb2Rl czIucHV0KGluZm8ubm9kZUFkZHJlc3MsIGluZm8pOwogICAgICAgIH0KCiAgICAgICAgZmluYWwg Tm9kZUluZm8gbmV3TWFzdGVyID0gbmV3Tm9kZXMudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7 CgogICAgICAgIG5vZGVNYXAucHV0QWxsKG5ld05vZGVzKTsKICAgICAgICBub2RlTWFwLnZhbHVl cygpLnJldGFpbkFsbChuZXdOb2Rlcy52YWx1ZXMoKSk7CiAgICAgICAgbm9kZU1hcDIucHV0QWxs KG5ld05vZGVzMik7CiAgICAgICAgbm9kZU1hcDIudmFsdWVzKCkucmV0YWluQWxsKG5ld05vZGVz Mi52YWx1ZXMoKSk7CgogICAgICAgIG1hc3RlciA9IG5ld01hc3RlcjsKICAgICAgICB2aWV3TGlz dGVuZXIub25WaWV3Q2hhbmdlKG5vZGVNYXAyLmtleVNldCgpKTsKICAgIH0KCiAgICBAU3VwcHJl c3NXYXJuaW5ncygiUE1ELkF2b2lkVGhyb3dpbmdOdWxsUG9pbnRlckV4Y2VwdGlvbiIpCiAgICBA T3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIHNlbmRNZXNzYWdlKE5vZGVBZGRyZXNzIGFkZHJlc3Ms IGJ5dGUgbWVzc2FnZVtdKSB7CiAgICAgICAgZmluYWwgTm9kZUluZm8gbm9kZSA9IG5vZGVNYXAy LmdldChPYmplY3RzLnJlcXVpcmVOb25OdWxsKGFkZHJlc3MsICJub2RlIGFkZHJlc3MiKSk7CiAg ICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFy Z3VtZW50RXhjZXB0aW9uKCJDbHVzdGVyIG5vZGUgbm90IGZvdW5kOiAiICsgYWRkcmVzcyk7CiAg ICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRoaXMuY2hhbm5lbC5zZW5kKG5vZGUu YWRkcmVzcywgbWVzc2FnZSk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAg ICAgICAgdGhyb3cgbmV3IFVuY2hlY2tlZEV4Y2VwdGlvbihlKTsKICAgICAgICB9CiAgICB9Cgog ICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgPEssIFY+IERpc3RyaWJ1dGVkTWFwPEssIFY+IGdldENh Y2hlKGZpbmFsIFN0cmluZyBuYW1lKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbmZpbmlzcGFuRGlz dHJpYnV0ZWRNYXA8PihjYWNoZU1hbmFnZXIuZ2V0Q2FjaGUobmFtZSkpOwogICAgfQoKICAgIEBP dmVycmlkZQogICAgcHVibGljIDxLLCBWPiBBZHZhbmNlZENhY2hlPEssIFY+IGdldEFkdmFuY2Vk Q2FjaGUoZmluYWwgU3RyaW5nIG5hbWUpIHsKICAgICAgICBDYWNoZTxLLCBWPiBjYWNoZSA9IGNh Y2hlTWFuYWdlci5nZXRDYWNoZShuYW1lKTsKICAgICAgICByZXR1cm4gY2FjaGUuZ2V0QWR2YW5j ZWRDYWNoZSgpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBkb1JlY2VpdmUoZmluYWwgTWVzc2Fn ZSBtc2cpIHsKICAgICAgICBmaW5hbCBOb2RlSW5mbyBub2RlSW5mbyA9IG5vZGVNYXAuZ2V0KG1z Zy5nZXRTcmMoKSk7CiAgICAgICAgaWYgKG5vZGVJbmZvID09IG51bGwpIHsKICAgICAgICAgICAg bG9nZ2VyLndhcm4oIlJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBpbnZhbGlkIGFkZHJlc3Mge30iLCBt c2cuZ2V0U3JjKCkpOwogICAgICAgICAgICBtZXNzYWdlTGlzdGVuZXIucmVjZWl2ZShuZXcgTm9k ZUFkZHJlc3NJbXBsKG5ldyBqYXZhLnV0aWwuVVVJRCgoKFVVSUQpIG1zZy5nZXRTcmMoKSkuZ2V0 TW9zdFNpZ25pZmljYW50Qml0cygpLCAoKFVVSUQpIG1zZy5nZXRTcmMoKSkuZ2V0TGVhc3RTaWdu aWZpY2FudEJpdHMoKSkpLCBtc2cuZ2V0QnVmZmVyKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgIG1lc3NhZ2VMaXN0ZW5lci5yZWNlaXZlKG5vZGVJbmZvLm5vZGVBZGRyZXNzLCBtc2cu Z2V0QnVmZmVyKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgTm9kZUFkZHJlc3MgZ2V0 TWFzdGVyKCkgewogICAgICAgIHJldHVybiBtYXN0ZXIgIT0gbnVsbCA/IG1hc3Rlci5ub2RlQWRk cmVzcyA6IG51bGw7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRKZ3JvdXBzQ29uZmlnKCkg ewogICAgICAgIHJldHVybiBqZ3JvdXBzQ29uZmlnOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNl dEpncm91cHNDb25maWcoZmluYWwgU3RyaW5nIGpncm91cHNDb25maWcpIHsKICAgICAgICB0aGlz Lmpncm91cHNDb25maWcgPSBqZ3JvdXBzQ29uZmlnOwogICAgfQoKICAgIHB1YmxpYyBib29sZWFu IGlzTmFtZUJhc2VkVXBkUG9ydCgpIHsKICAgICAgICByZXR1cm4gbmFtZUJhc2VkVXBkUG9ydDsK ICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXROYW1lQmFzZWRVcGRQb3J0KGZpbmFsIGJvb2xlYW4g bmFtZUJhc2VkVXBkUG9ydCkgewogICAgICAgIHRoaXMubmFtZUJhc2VkVXBkUG9ydCA9IG5hbWVC YXNlZFVwZFBvcnQ7CiAgICB9CgogICAgcHVibGljIGludCBnZXRQb3J0UmFuZ2VMZW5ndGgoKSB7 CiAgICAgICAgcmV0dXJuIHBvcnRSYW5nZUxlbmd0aDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBz ZXRQb3J0UmFuZ2VMZW5ndGgoZmluYWwgaW50IHBvcnRSYW5nZUxlbmd0aCkgewogICAgICAgIHRo aXMucG9ydFJhbmdlTGVuZ3RoID0gcG9ydFJhbmdlTGVuZ3RoOwogICAgfQp9 --000000000000123ff2059c1aa44d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --000000000000123ff2059c1aa44d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ javagroups-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/javagroups-users --000000000000123ff2059c1aa44d--