Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 4970 invoked from network); 22 Nov 2000 15:31:02 -0000 Received: from webmail.decode.is (HELO smail.decode.is) (213.167.128.50) by locus.apache.org with SMTP; 22 Nov 2000 15:31:02 -0000 Subject: [PATCH] WOOPS (Was RE: EmbededTomcat.java requires jsse) Date: Wed, 22 Nov 2000 15:31:00 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C05499.37499BC6" Message-ID: <56AA4E1C98A43E41A75C8643D4F0B724DE1E@smail.decode.is> X-MS-Has-Attach: X-MS-TNEF-Correlator: content-class: urn:content-classes:message X-MimeOLE: Produced By Microsoft Exchange V6.0.4417.0 Thread-Topic: [PATCH] WOOPS (Was RE: EmbededTomcat.java requires jsse) Thread-Index: AcBUmTcvDgNRBdT9RqyEVS1ZYPuQqQ== From: "Stefan F. Stefansson" To: X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N This is a multi-part message in MIME format. ------_=_NextPart_001_01C05499.37499BC6 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Woopsie... I have to take this one on me... sorry guys. Well... that's what you get when you let bozos like me mess with your code ;o) Costin: you were right... all it took was what you mentioned. I've changed the file and it's compiling. I've done a little testing on it and it seems to be working ok. At least it's compiling (with and without JSSE jars in the classpath) and it's making the secure endpoints correctly (when compiled with JSSE. If you don't compile tomcat with JSSE you can't make the secure endpoints but that's normal and ok). I haven't done any exhaustive testing and I don't know when/if I'm gonna have time to do that, but I've done a little testing and everything seems to be working fine. In the meantime, here is the updated file and once again... I'm really sorry about this. Kind regards, Stefan Freyr -----Original Message----- From: Costin Manolache [mailto:cmanolache@yahoo.com] Sent: 22. november 2000 01:18 To: tomcat-dev@jakarta.apache.org Subject: Re: EmbededTomcat.java requires jsse I don't like that - tomcat is supposed to depend only on JDK1.1 and a minimal number of extensions ( jaxp is the only required extension ). All non-jdk1.1, non-standard extensions can be used, but shouldn't be required to build standalone tomcat. I don't know if it's too late to change this - it seems=20 we just need to replace=20 sc.setSocketFactory(new org.apache.tomcat.net.SSLSocketFactory()); with=20 sc.setAttribute( "socketFactory", =09 "org.apache.tomcat.net.SSLSocketFactory"); and remove the import line. I know it's not the the easiest solution, but I think it's worth the added complexity - it is still a requirement to support JDK1.1 and work with a minimal set of library ( and JSSE is a very special one anyway, export, etc). Costin --- Mike Anderson wrote: > I updated my source from CVS yesterday and all of > the sudden I couldn't build. I got an error saying > javax.net.ServeSocketFactory not found in import > when trying to build > src\share\org\apache\tomcat\net\SSLSocketFactory.java. > I looked at the build.xml and it looked like it > shouldn't even be trying to build > SSLSocketFactory.java since I didn't have the jsse > classes in my classpath. However, looking in the > EmbededTomcat.java that was checked in on 11/17, it > now does an import of org.apache.tomcat.net.* and > directly references > org.apache.tomcat.net.SSLSocketFactory. Is there a > way to fix this or are we now going to need to add > the jsse jars to the build classpath? If I do need > to add the jsse jars, we should probably update the > README to mention this so that others don't pull > their hair out like I did for a while today. >=20 > Thanks, >=20 > Mike Anderson > Senior Software Engineer > Platform Services Group > mmanders@novell.com > Novell, Inc., the leading provider of Net services > software > www.novell.com >=20 __________________________________________________ Do You Yahoo!? Yahoo! Shopping - Thousands of Stores. Millions of Products. http://shopping.yahoo.com/ ------_=_NextPart_001_01C05499.37499BC6 Content-Type: application/octet-stream; name="EmbededTomcat.java" Content-Transfer-Encoding: base64 Content-Description: EmbededTomcat.java Content-Disposition: attachment; filename="EmbededTomcat.java" cGFja2FnZSBvcmcuYXBhY2hlLnRvbWNhdC5zdGFydHVwOwoKaW1wb3J0IGphdmEubmV0Lio7Cmlt cG9ydCBqYXZhLmlvLio7CgppbXBvcnQgb3JnLmFwYWNoZS50b21jYXQuY29yZS4qOwppbXBvcnQg b3JnLmFwYWNoZS50b21jYXQubmV0Lio7CmltcG9ydCBvcmcuYXBhY2hlLnRvbWNhdC5yZXF1ZXN0 Lio7CmltcG9ydCBvcmcuYXBhY2hlLnRvbWNhdC5zZXJ2aWNlLio7CmltcG9ydCBvcmcuYXBhY2hl LnRvbWNhdC5zZXJ2aWNlLmh0dHAuKjsKaW1wb3J0IG9yZy5hcGFjaGUudG9tY2F0LnNlc3Npb24u U3RhbmRhcmRTZXNzaW9uSW50ZXJjZXB0b3I7CmltcG9ydCBvcmcuYXBhY2hlLnRvbWNhdC5jb250 ZXh0Lio7CmltcG9ydCBqYXZhLnNlY3VyaXR5Lio7CmltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZs ZXRDb250ZXh0OwppbXBvcnQgamF2YS51dGlsLio7CgovKioKICogIFVzZSB0aGlzIGNsYXNzIHRv IGVtYmVkIHRvbWNhdCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogKiAgVGhlIG9yZGVyIGlzIGltcG9y dGFudDoKICogIDEuIHNldCBwcm9wZXJ0aWVzIGxpa2Ugd29ya0RpciBhbmQgZGVidWcKICogIDIu IGFkZCBhbGwgaW50ZXJjZXB0b3JzIGluY2x1ZGluZyB5b3VyIGFwcGxpY2F0aW9uLXNwZWNpZmlj CiAqICAzLiBhZGQgdGhlIGVuZHBvaW50cwogKiAgNC4gYWRkIGF0IGxlYXN0IHRoZSByb290IGNv bnRleHQgKCB5b3UgY2FuIGFkZCBtb3JlIGlmIHlvdSB3YW50ICkKICogIDUuIGNhbGwgc3RhcnQo KS4gVGhlIHdlYiBzZXJ2aWNlIHdpbGwgYmUgb3BlcmF0aW9uYWwuCiAqICA2LiBZb3UgY2FuIGFk ZC9yZW1vdmUgY29udGV4dHMKICogIDcuIHN0b3AoKS4KICoKICogIFlvdSBjYW4gYWRkIG1vcmUg Y29udGV4dHMgYWZ0ZXIgc3RhcnQsIGJ1dCBpbnRlcmNlcHRvcnMgYW5kCiAqICBlbmRwb2ludHMg bXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBmaXJzdCBjb250ZXh0IGFuZCByb290IG11c3QgYmUKICog IHNldCBiZWZvcmUgc3RhcnQoKS4KICoKICogIEFsbCBmaWxlIHBhdGhzIF9tdXN0XyBiZSBhYnNv bHV0ZS4gKCByaWdodCBub3cgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUgaXQKICogIHdpbGwgYmUg bWFkZSBhYnNvbHV0ZSB1c2luZyB0b21jYXQuaG9tZSBhcyBiYXNlLiBUaGlzIGJlaGF2aW9yIGlz IHZlcnkKICogICJleHBlbnNpdmUiIGFzIGNvZGUgY29tcGxleGl0eSBhbmQgd2lsbCBiZSBkZXBy ZWNhdGVkICkuCiAqCiAqIEBhdXRob3IgY29zdGluQGVuZy5zdW4uY29tCiAqIEBhdXRob3IgU3Rl ZmFuIEZyZXlyIFN0YWZhbnNzb24gW3N0ZWJiaUBkZWNvZGUuaXNdCiAqLwpwdWJsaWMgY2xhc3Mg RW1iZWRlZFRvbWNhdCB7IC8vIGV4dGVuZHMgV2ViU2VydmljZQogICAgQ29udGV4dE1hbmFnZXIg Y29udGV4dE0gPSBudWxsOwogICAgT2JqZWN0IGFwcGxpY2F0aW9uOwogICAgLy8gbnVsbCA9PSBu b3Qgc2V0IHVwCiAgICBWZWN0b3IgcmVxdWVzdEludD1udWxsOwogICAgVmVjdG9yIGNvbnRleHRJ bnQ9bnVsbDsKICAgIC8qKiBSaWdodCBub3cgd2UgYXNzdW1lIGFsbCB3ZWIgYXBwcyB1c2UgdGhl IHNhbWUKCXNlcnZsZXQgQVBJIHZlcnNpb24uIFRoaXMgd2lsbCBjaGFuZ2UgYWZ0ZXIgd2UKCWZp bmlzaCB0aGUgRmFjYWRlTWFuYWdlciBpbXBsZW1lbnRhdGlvbgogICAgKi8KICAgIEZhY2FkZU1h bmFnZXIgZmFjYWRlTT1udWxsOwogICAgVmVjdG9yIGNvbm5lY3RvcnM9bmV3IFZlY3RvcigpOwoK ICAgIFN0cmluZyB3b3JrRGlyOwoKICAgIC8vIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzCiAgICBp bnQgZGVidWc9MDsKCiAgICBwdWJsaWMgRW1iZWRlZFRvbWNhdCgpIHsKICAgIH0KCiAgICAvLyAt LS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9wZXJ0aWVzIC0gc2V0IGJlZm9yZSBzdGFydAoKICAgIC8q KiBTZXQgZGVidWdnaW5nIC0gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueXRoaW5nIGVsc2UKICAg ICAqLwogICAgcHVibGljIHZvaWQgc2V0RGVidWcoIGludCBkZWJ1ZyApIHsKCXRoaXMuZGVidWc9 ZGVidWc7CiAgICB9CgogICAgLyoqIFRoaXMgaXMgYW4gYWRhcHRlciBvYmplY3QgdGhhdCBwcm92 aWRlcyBjYWxsYmFja3MgaW50byB0aGUKICAgICAqICBhcHBsaWNhdGlvbi4KICAgICAqICBGb3Ig dG9tY2F0LCBpdCB3aWxsIGJlIGEgUmVxdWVzdEludGVyY2VwdG9yLgogICAgICogCVNlZSB0aGUg dG9wIGxldmVsIGRvY3VtZW50YXRpb24KICAgICAqLwogICAgcHVibGljIHZvaWQgYWRkQXBwbGlj YXRpb25BZGFwdGVyKCBPYmplY3QgYWRhcHRlciApIHsKCWlmKHJlcXVlc3RJbnQ9PW51bGwpICBp bml0RGVmYXVsdEludGVyY2VwdG9ycygpOwoKCS8vIEluIG91ciBjYXNlIHRoZSBhZGFwdGVyIG11 c3QgYmUgUmVxdWVzdEludGVyY2VwdG9yLgoJaWYgKCBhZGFwdGVyIGluc3RhbmNlb2YgUmVxdWVz dEludGVyY2VwdG9yICkgewoJICAgIGFkZFJlcXVlc3RJbnRlcmNlcHRvciggKFJlcXVlc3RJbnRl cmNlcHRvcilhZGFwdGVyKTsKCX0KICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXRBcHBsaWNhdGlv biggT2JqZWN0IGFwcCApIHsKCWFwcGxpY2F0aW9uPWFwcDsKICAgIH0KCiAgICAvKiogS2VlcCBh IHJlZmVyZW5jZSB0byB0aGUgYXBwbGljYXRpb24gaW4gd2hpY2ggd2UgYXJlIGVtYmVkZWQKICAg ICAqLwogICAgcHVibGljIE9iamVjdCBnZXRBcHBsaWNhdGlvbigpIHsKCXJldHVybiBhcHBsaWNh dGlvbjsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXRXb3JrRGlyKCBTdHJpbmcgZGlyICkgewoJ d29ya0Rpcj1kaXI7CiAgICB9CgogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gRW5kcG9pbnRz IC0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgLyoqIEFkZCBhIHdlYiBzZXJ2aWNlIG9uIHRoZSBz cGVjaWZpZWQgYWRkcmVzcy4gWW91IG11c3QgYWRkIGFsbCB0aGUKICAgICAqICBlbmRwb2ludHMg YmVmb3JlIGNhbGxpbmcgc3RhcnQoKS4KICAgICAqLwogICAgcHVibGljIHZvaWQgYWRkRW5kcG9p bnQoIGludCBwb3J0LCBJbmV0QWRkcmVzcyBhZGRyICwgU3RyaW5nIGhvc3RuYW1lKSB7CglpZihk ZWJ1Zz4wKSBsb2coICJhZGRDb25uZWN0b3IgIiArIHBvcnQgKyAiICIgKyBhZGRyICsKCQkJICIg IiArIGhvc3RuYW1lICk7CgoJUG9vbFRjcENvbm5lY3RvciBzYz1uZXcgUG9vbFRjcENvbm5lY3Rv cigpOwoJc2Muc2V0U2VydmVyKCBjb250ZXh0TSApOwoJc2Muc2V0RGVidWcoIGRlYnVnICk7Cglz Yy5zZXRBdHRyaWJ1dGUoICJ2aG9zdF9wb3J0IiAsIG5ldyBJbnRlZ2VyKCBwb3J0ICkgKTsKCWlm KCBhZGRyICE9IG51bGwgKSBzYy5zZXRBdHRyaWJ1dGUoICJ2aG9zdF9hZGRyZXNzIiwgYWRkciAp OwoJaWYoIGhvc3RuYW1lICE9IG51bGwgKSBzYy5zZXRBdHRyaWJ1dGUoICJ2aG9zdF9uYW1lIiwg aG9zdG5hbWUgKTsKCglzYy5zZXRUY3BDb25uZWN0aW9uSGFuZGxlciggbmV3IEh0dHBDb25uZWN0 aW9uSGFuZGxlcigpKTsKCgljb250ZXh0TS5hZGRTZXJ2ZXJDb25uZWN0b3IoICBzYyApOwogICAg fQoKICAgIC8qKiBBZGQgYSBzZWN1cmUgd2ViIHNlcnZpY2Ugd2l0aG91dCBjbGllbnQgYXV0aGVu dGljYXRpb24gdXNpbmcgdGhlCiAgICAgKiBkZWZhdWx0IHNlcnZlciBzb2NrZXQgZmFjdG9yeS4K ICAgICAqLwogICAgcHVibGljIHZvaWQgYWRkU2VjdXJlRW5kcG9pbnQoIGludCBwb3J0LCBJbmV0 QWRkcmVzcyBhZGRyLCBTdHJpbmcgaG9zdG5hbWUsCgkJCQkgICAgU3RyaW5nIGtleUZpbGUsIFN0 cmluZyBrZXlQYXNzICkKICAgIHsKICAgICAgICBhZGRTZWN1cmVFbmRwb2ludChwb3J0LCBhZGRy LCBob3N0bmFtZSwga2V5RmlsZSwga2V5UGFzcywgZmFsc2UpOwogICAgfQoKICAgIC8qKiBBZGQg YSBzZWN1cmUgd2ViIHNlcnZpY2UgdXNpbmcgdGhlCiAgICAgKiBvcmcuYXBhY2hlLnRvbWNhdC5u ZXQuU1NMU29ja2V0RmFjdG9yeS4gIGNsaWVudEF1dGggc3BlY2lmaWVzIHdoZXRoZXIKICAgICAq IGNsaWVudCBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCBvciBub3QuCiAgICAgKi8KICAgIHB1 YmxpYyB2b2lkIGFkZFNlY3VyZUVuZHBvaW50KGludCBwb3J0LCBJbmV0QWRkcmVzcyBhZGRyLCBT dHJpbmcgaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcg a2V5U3RvcmUsIFN0cmluZyBrZXlQYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbGVhbiBjbGllbnRBdXRoKQogICAgewoJaWYoZGVidWc+MCkgbG9nKCAiYWRkU2VjdXJl Q29ubmVjdG9yICIgKyBwb3J0ICsgIiAiICsgYWRkciArICIgIiArCgkJCSBob3N0bmFtZSApOwoK CVBvb2xUY3BDb25uZWN0b3Igc2M9bmV3IFBvb2xUY3BDb25uZWN0b3IoKTsKCXNjLnNldFNlcnZl ciggY29udGV4dE0gKTsKCWNvbnRleHRNLnNldFNlY3VyZVBvcnQoIHBvcnQgKTsKCXNjLnNldEF0 dHJpYnV0ZSggInZob3N0X3BvcnQiICwgbmV3IEludGVnZXIoIHBvcnQgKSApOwoJc2Muc2V0QXR0 cmlidXRlKCAic29ja2V0RmFjdG9yeSIsICJvcmcuYXBhY2hlLnRvbWNhdC5uZXQuU1NMU29ja2V0 RmFjdG9yeSIpOwoKICAgIGlmKCBhZGRyICE9IG51bGwgKSBzYy5zZXRBdHRyaWJ1dGUoICJ2aG9z dF9hZGRyZXNzIiwgYWRkciApOwoJaWYoIGhvc3RuYW1lICE9IG51bGwgKSBzYy5zZXRBdHRyaWJ1 dGUoICJ2aG9zdF9uYW1lIiwgaG9zdG5hbWUgKTsKICAgIGlmIChrZXlTdG9yZSAhPSBudWxsKQog ICAgICAgIHNjLnNldEF0dHJpYnV0ZSgia2V5c3RvcmUiLCBrZXlTdG9yZSk7CiAgICBpZiAoa2V5 UGFzcyAhPSBudWxsKQogICAgICAgIHNjLnNldEF0dHJpYnV0ZSgia2V5cGFzcyIsIGtleVBhc3Mp OwogICAgaWYgKGNsaWVudEF1dGgpCiAgICAgICAgc2Muc2V0QXR0cmlidXRlKCJjbGllbnRBdXRo IiwgInRydWUiKTsKCgkvLwlTeXN0ZW0ub3V0LnByaW50bG4oIlhYWCAiICsga2V5RmlsZSArICIg IiArIGtleVBhc3MpOwoJSHR0cENvbm5lY3Rpb25IYW5kbGVyIGNoPW5ldyBIdHRwQ29ubmVjdGlv bkhhbmRsZXIoKTsKCWNoLnNldFNlY3VyZSh0cnVlKTsKCXNjLnNldFRjcENvbm5lY3Rpb25IYW5k bGVyKCBjaCApOwoJLy8gWFhYIGFkZCB0aGUgc2VjdXJlIHNvY2tldAoKCWNvbnRleHRNLmFkZFNl cnZlckNvbm5lY3RvciggIHNjICk7CiAgICB9CgogICAgLyoqIEFkZCBhIGN1c3RvbSB3ZWIgc2Vy dmljZSB1c2luZyB0aGUgc3BlY2lmaWVkIHNvY2tldCBmYWN0b3J5LgogICAgICoKICAgICAqIEBw YXJhbSBwb3J0IFBvcnQgbnVtYmVyIG9uIHdoaWNoIHRvIGxpc3RlbgogICAgICogQHBhcmFtIGFk ZHIgSW50ZXJuZXQgYWRkcmVzcyBvbiB3aGljaCB0byBsaXN0ZW4KICAgICAqIEBwYXJhbSBob3N0 bmFtZSBWaXJ0dWFsIGhvc3QgbmFtZSBmb3IgdGhpcyBzZXJ2aWNlCiAgICAgKiBAcGFyYW0gc2Vj dXJlIFNob3VsZCB0aGlzIGVuZHBvaW50IGJlIG1hcmtlZCBzZWN1cmU/CiAgICAgKiBAcGFyYW0g c29ja2V0RmFjdG9yeSBUaGUgZmFjdG9yeSBmb3Igc2VydmVyIHNvY2tldHMgdG8gYmUgdXNlZAog ICAgICovCiAgICBwdWJsaWMgdm9pZCBhZGRDdXN0b21FbmRwb2ludChpbnQgcG9ydCwgSW5ldEFk ZHJlc3MgYWRkciwgU3RyaW5nIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbGVhbiBzZWN1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT ZXJ2ZXJTb2NrZXRGYWN0b3J5IHNvY2tldEZhY3RvcnkpIHsKICAgICAgICBpZiAoZGVidWc+MCkg bG9nKCJhZGRDdXN0b21FbmRwb2ludCAiICsgcG9ydCArICIgIiArIGFkZHIgKyAiICIgKwogICAg ICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWUpOwoKICAgICAgICBQb29sVGNwQ29ubmVjdG9y IHNjID0gbmV3IFBvb2xUY3BDb25uZWN0b3IoKTsKICAgICAgICBzYy5zZXRTZXJ2ZXIoY29udGV4 dE0pOwogICAgICAgIGlmIChzZWN1cmUpIGNvbnRleHRNLnNldFNlY3VyZVBvcnQocG9ydCk7CiAg ICAgICAgc2Muc2V0QXR0cmlidXRlKCJ2aG9zdF9wb3J0IiwgbmV3IEludGVnZXIocG9ydCkpOwog ICAgICAgIGlmIChhZGRyICE9IG51bGwpIHNjLnNldEF0dHJpYnV0ZSgidmhvc3RfYWRkcmVzcyIs IGFkZHIpOwogICAgICAgIGlmIChob3N0bmFtZSAhPSBudWxsKSBzYy5zZXRBdHRyaWJ1dGUoInZo b3N0X25hbWUiLCBob3N0bmFtZSk7CiAgICAgICAgc2Muc2V0U29ja2V0RmFjdG9yeShzb2NrZXRG YWN0b3J5KTsKICAgICAgICBIdHRwQ29ubmVjdGlvbkhhbmRsZXIgY2ggPSBuZXcgSHR0cENvbm5l Y3Rpb25IYW5kbGVyKCk7CiAgICAgICAgY2guc2V0U2VjdXJlKHNlY3VyZSk7CiAgICAgICAgc2Mu c2V0VGNwQ29ubmVjdGlvbkhhbmRsZXIoY2gpOwogICAgICAgIGNvbnRleHRNLmFkZFNlcnZlckNv bm5lY3RvcihzYyk7CgogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnRleHQg YWRkL3JlbW92ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIC8qKiBBZGQgYW5kIGluaXQgYSBj b250ZXh0CiAgICAgKi8KICAgIHB1YmxpYyBTZXJ2bGV0Q29udGV4dCBhZGRDb250ZXh0KCBTdHJp bmcgY3R4UGF0aCwgVVJMIGRvY1Jvb3QgKSB7CglpZihkZWJ1Zz4wKSBsb2coICJhZGQgY29udGV4 dCBcIiIgKyBjdHhQYXRoICsgIlwiICIgKyBkb2NSb290ICk7CglpZiggY29udGV4dE0gPT0gbnVs bCApCgkgICAgaW5pdENvbnRleHRNYW5hZ2VyKCk7CgoJLy8gdG9tY2F0IHN1cHBvcnRzIG9ubHkg ZmlsZS1iYXNlZCBjb250ZXh0cwoJaWYoICEgImZpbGUiLmVxdWFscyggZG9jUm9vdC5nZXRQcm90 b2NvbCgpKSApIHsKCSAgICBsb2coICJhZGRDb250ZXh0KCkgaW52YWxpZCBkb2NSb290OiAiICsg ZG9jUm9vdCApOwoJICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGRvY1Jv b3QgIiArIGRvY1Jvb3QgKTsKCX0KCgl0cnkgewoJICAgIENvbnRleHQgY3R4PW5ldyBDb250ZXh0 KCk7CgkgICAgY3R4LnNldERlYnVnKCBkZWJ1ZyApOwoJICAgIGN0eC5zZXRDb250ZXh0TWFuYWdl ciggY29udGV4dE0gKTsKCSAgICBjdHguc2V0UGF0aCggY3R4UGF0aCApOwoJICAgIC8vIFhYWCBp ZiB2aXJ0dWFsIGhvc3Qgc2V0IGl0LgoJICAgIGN0eC5zZXREb2NCYXNlKCBkb2NSb290LmdldEZp bGUoKSk7CgkgICAgY29udGV4dE0uYWRkQ29udGV4dCggY3R4ICk7CgkgICAgaWYoIGZhY2FkZU0g PT0gbnVsbCApIGZhY2FkZU09Y3R4LmdldEZhY2FkZU1hbmFnZXIoKTsKCSAgICByZXR1cm4gY3R4 LmdldEZhY2FkZSgpOwoJfSBjYXRjaCggRXhjZXB0aW9uIGV4ICkgewoJICAgIGV4LnByaW50U3Rh Y2tUcmFjZSgpOwoJfQoJcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqIFJlbW92ZSBhIGNvbnRl eHQKICAgICAqLwogICAgcHVibGljIHZvaWQgcmVtb3ZlQ29udGV4dCggU2VydmxldENvbnRleHQg c2N0eCApIHsKCWlmKGRlYnVnPjApIGxvZyggInJlbW92ZSBjb250ZXh0ICIgKyBzY3R4ICk7Cgl0 cnkgewoJICAgIGlmKCBmYWNhZGVNPT1udWxsICkgewoJCVN5c3RlbS5vdXQucHJpbnRsbigiWFhY IEVSUk9SOiBubyBmYWNhZGUgbWFuYWdlciIpOwoJCXJldHVybjsKCSAgICB9CgkgICAgQ29udGV4 dCBjdHg9ZmFjYWRlTS5nZXRSZWFsQ29udGV4dCggc2N0eCApOwoJICAgIGNvbnRleHRNLnJlbW92 ZUNvbnRleHQoIGN0eCApOwoJfSBjYXRjaCggRXhjZXB0aW9uIGV4ICkgewoJICAgIGV4LnByaW50 U3RhY2tUcmFjZSgpOwoJfQogICAgfQoKICAgIEhhc2h0YWJsZSBleHRyYUNsYXNzUGF0aHM9bmV3 IEhhc2h0YWJsZSgpOwoKICAgIC8qKiBUaGUgYXBwbGljYXRpb24gbWF5IHdhbnQgdG8gYWRkIGFu IGFwcGxpY2F0aW9uLXNwZWNpZmljIHBhdGgKCXRvIHRoZSBjb250ZXh0LgogICAgKi8KICAgIHB1 YmxpYyB2b2lkIGFkZENsYXNzUGF0aCggU2VydmxldENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNw YXRoICkgewoJaWYoZGVidWc+MCkgbG9nKCAiYWRkQ2xhc3NQYXRoICIgKyBjb250ZXh0LmdldFJl YWxQYXRoKCIiKSArICIgIiArCgkJCSAgY3BhdGggKTsKCgl0cnkgewoJICAgIFZlY3RvciBjcD0o VmVjdG9yKWV4dHJhQ2xhc3NQYXRocy5nZXQoY29udGV4dCk7CgkgICAgaWYoIGNwID09IG51bGwg KSB7CgkJY3A9bmV3IFZlY3RvcigpOwoJCWV4dHJhQ2xhc3NQYXRocy5wdXQoIGNvbnRleHQsIGNw ICk7CgkgICAgfQoJICAgIGNwLmFkZEVsZW1lbnQoIGNwYXRoICk7Cgl9IGNhdGNoKCBFeGNlcHRp b24gZXggKSB7CgkgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7Cgl9CgoJLy8gWFhYIFRoaXMgZnVu Y3Rpb25hbGl0eSBjYW4gYmUgYWNoaWV2ZWQgYnkgc2V0dGluZyBpdCBpbiB0aGUgcGFyZW50Cgkv LyBjbGFzcyBsb2FkZXIgKCBpLmUuIHRoZSBsb2FkZXIgdGhhdCBpcyB1c2VkIHRvIGxvYWQgdG9t Y2F0ICkuCgoJLy8gSXQgc2hvdWxkbid0IGJlIG5lZWRlZCBpZiB0aGUgd2ViIGFwcCBpcyBzZWxm LWNvbnRhaW5lZCwKICAgIH0KCiAgICAvKiogRmluZCB0aGUgY29udGV4dCBtb3VudGVkIGF0IC9j cGF0aC4KCVJpZ2h0IG5vdyB2aXJ0dWFsIGhvc3RzIGFyZSBub3Qgc3VwcG9ydGVkIGluCgllbWJl ZGVkIHRvbWNhdC4KICAgICovCiAgICBwdWJsaWMgU2VydmxldENvbnRleHQgZ2V0U2VydmxldENv bnRleHQoIFN0cmluZyBob3N0LAoJCQkJCSAgICAgU3RyaW5nIGNwYXRoICkKICAgIHsKCS8vIFdl IGRvbid0IHN1cHBvcnQgdmlydHVhbCBob3N0cyBpbiBlbWJlZGVkIHRvbWNhdAoJLy8gKCBpdCdz IG5vdCBkaWZmaWN1bHQsIGJ1dCBjYW4gYmUgZG9uZSBsYXRlciApCglDb250ZXh0IGN0eD1jb250 ZXh0TS5nZXRDb250ZXh0KCBjcGF0aCApOwoJaWYoIGN0eD09bnVsbCApIHJldHVybiBudWxsOwoJ cmV0dXJuIGN0eC5nZXRGYWNhZGUoKTsKICAgIH0KCiAgICAvKiogVGhpcyB3aWxsIG1ha2UgdGhl IGNvbnRleHQgYXZhaWxhYmxlLgogICAgICovCiAgICBwdWJsaWMgdm9pZCBpbml0Q29udGV4dCgg U2VydmxldENvbnRleHQgc2N0eCApIHsKCXRyeSB7CgkgICAgaWYoIGZhY2FkZU09PW51bGwgKSB7 CgkJU3lzdGVtLm91dC5wcmludGxuKCJYWFggRVJST1I6IG5vIGZhY2FkZSBtYW5hZ2VyIik7CgkJ cmV0dXJuOwoJICAgIH0KCSAgICBDb250ZXh0IGN0eD1mYWNhZGVNLmdldFJlYWxDb250ZXh0KCBz Y3R4ICk7CgkgICAgY29udGV4dE0uaW5pdENvbnRleHQoIGN0eCApOwoKCSAgICBTZXJ2bGV0TG9h ZGVyIHNsPWN0eC5nZXRTZXJ2bGV0TG9hZGVyKCk7CgkgICAgLy8JICAgIFN5c3RlbS5vdXQucHJp bnRsbigiU2VydmxldExvYWRlcjogIiArIHNsICk7CgkgICAgT2JqZWN0IHBkPWN0eC5nZXRQcm90 ZWN0aW9uRG9tYWluKCk7CgkgICAgLy8JICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ3R4LnBkICIg KyBwZCk7CgoJICAgIC8vIEFkZCBhbnkgZXh0cmEgY3BhdGhzCgkgICAgVmVjdG9yIGNwPShWZWN0 b3IpZXh0cmFDbGFzc1BhdGhzLmdldCggc2N0eCApOwoJICAgIGlmKCBjcCE9bnVsbCApIHsKCQlm b3IoIGludCBpPTA7IGk8Y3Auc2l6ZSgpOyBpKysgKSB7CgkJICAgIFN0cmluZyBjcGF0aD0oU3Ry aW5nKWNwLmVsZW1lbnRBdChpKTsKCQkgICAgc2wuYWRkUmVwb3NpdG9yeSggbmV3IEZpbGUoY3Bh dGgpLCBwZCk7CgkJfQoJICAgIH0KCgoJfSBjYXRjaCggRXhjZXB0aW9uIGV4ICkgewoJICAgIGV4 LnByaW50U3RhY2tUcmFjZSgpOwoJfQogICAgfQoKICAgIHB1YmxpYyB2b2lkIGRlc3Ryb3lDb250 ZXh0KCBTZXJ2bGV0Q29udGV4dCBjdHggKSB7CgogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tIFN0YXJ0L3N0b3AKCiAgICBwdWJsaWMgdm9pZCBzdGFydCgpIHsKCXRyeSB7CgkgICAg Y29udGV4dE0uc3RhcnQoKTsKCX0gY2F0Y2goIElPRXhjZXB0aW9uIGV4ICkgewoJICAgIFN5c3Rl bS5vdXQucHJpbnRsbigiRXJyb3Igc3RhcnRpbmcgZW5kcG9pbmcgIiArIGV4LnRvU3RyaW5nKCkp OwoJfSBjYXRjaCggRXhjZXB0aW9uIGV4ICkgewoJICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOwoJ fQoJaWYoZGVidWc+MCkgbG9nKCAiU3RhcnRlZCIgKTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBz dG9wKCkgewoJLy8gWFhYIG5vdCBpbXBsZW1lbnRlZAogICAgfQoKICAgIC8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tIFByaXZhdGUgbWV0aG9kcwogICAgcHVibGljIHZvaWQgYWRkUmVxdWVzdEludGVy Y2VwdG9yKCBSZXF1ZXN0SW50ZXJjZXB0b3IgcmkgKSB7CglpZiggcmVxdWVzdEludCA9PSBudWxs ICkgcmVxdWVzdEludD1uZXcgVmVjdG9yKCk7CglyZXF1ZXN0SW50LmFkZEVsZW1lbnQoIHJpICk7 CglpZiggcmkgaW5zdGFuY2VvZiBCYXNlSW50ZXJjZXB0b3IgKQoJICAgICgoQmFzZUludGVyY2Vw dG9yKXJpKS5zZXREZWJ1ZyggZGVidWcgKTsKICAgIH0KICAgIHB1YmxpYyB2b2lkIGFkZENvbnRl eHRJbnRlcmNlcHRvciggQ29udGV4dEludGVyY2VwdG9yIGNpICkgewoJaWYoIGNvbnRleHRJbnQg PT0gbnVsbCApIGNvbnRleHRJbnQ9bmV3IFZlY3RvcigpOwoJY29udGV4dEludC5hZGRFbGVtZW50 KCBjaSApOwoJaWYoIGNpIGluc3RhbmNlb2YgQmFzZUludGVyY2VwdG9yICkKCSAgICAoKEJhc2VJ bnRlcmNlcHRvciljaSkuc2V0RGVidWcoIGRlYnVnICk7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lk IGluaXRDb250ZXh0TWFuYWdlcigpIHsKCWlmKHJlcXVlc3RJbnQ9PW51bGwpICBpbml0RGVmYXVs dEludGVyY2VwdG9ycygpOwoJY29udGV4dE09bmV3IENvbnRleHRNYW5hZ2VyKCk7Cgljb250ZXh0 TS5zZXREZWJ1ZyggZGVidWcgKTsKCglmb3IoIGludCBpPTA7IGk8IGNvbnRleHRJbnQuc2l6ZSgp IDsgaSsrICkgewoJICAgIGNvbnRleHRNLmFkZENvbnRleHRJbnRlcmNlcHRvciggKENvbnRleHRJ bnRlcmNlcHRvcikKCQkJCQkgICAgY29udGV4dEludC5lbGVtZW50QXQoIGkgKSApOwoJfQoKCWZv ciggaW50IGk9MDsgaTwgcmVxdWVzdEludC5zaXplKCkgOyBpKysgKSB7CgkgICAgY29udGV4dE0u YWRkUmVxdWVzdEludGVyY2VwdG9yKCAoUmVxdWVzdEludGVyY2VwdG9yKQoJCQkJCSAgICByZXF1 ZXN0SW50LmVsZW1lbnRBdCggaSApICk7Cgl9CgoJY29udGV4dE0uc2V0V29ya0Rpciggd29ya0Rp ciApOwoKCXRyeSB7CgkgICAgY29udGV4dE0uaW5pdCgpOwoJfSBjYXRjaCggRXhjZXB0aW9uIGV4 ICkgewoJICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOwoJfQoJaWYoZGVidWc+MCkgbG9nKCAiQ29u dGV4dE1hbmFnZXIgaW5pdGlhbGl6ZWQiICk7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIGluaXRE ZWZhdWx0SW50ZXJjZXB0b3JzKCkgewoJLy8gRXhwbGljaXRlbHkgc2V0IHVwIGFsbCB0aGUgaW50 ZXJjZXB0b3JzIHdlIG5lZWQuCgkvLyBUaGUgb3JkZXIgaXMgaW1wb3J0YW50ICggbGlrZSBpbiBh cGFjaGUgaG9va3MsIGl0J3MgYSBjaGFpbiAhKQoKCS8vIG5vIEF1dG9TZXR1cCAhCgoJLy8gc2V0 IHdvcmtkaXIsIGVuZ2luZSBoZWFkZXIsIGF1dGggU2VydmxldCwgZXJyb3Igc2VydmxldCwgbG9h ZGVyCglXZWJYbWxSZWFkZXIgd2ViWG1sST1uZXcgV2ViWG1sUmVhZGVyKCk7Cgl3ZWJYbWxJLnNl dFZhbGlkYXRlKCBmYWxzZSApOwoJYWRkQ29udGV4dEludGVyY2VwdG9yKCB3ZWJYbWxJICk7CgoJ UG9saWN5SW50ZXJjZXB0b3IgcG9sST1uZXcgUG9saWN5SW50ZXJjZXB0b3IoKTsKCWFkZENvbnRl eHRJbnRlcmNlcHRvciggcG9sSSApOwoJcG9sSS5zZXREZWJ1ZygwKTsKCglMb2FkZXJJbnRlcmNl cHRvciBsb2FkST1uZXcgTG9hZGVySW50ZXJjZXB0b3IoKTsKCWFkZENvbnRleHRJbnRlcmNlcHRv ciggbG9hZEkgKTsKCglEZWZhdWx0Q01TZXR0ZXIgZGVmYXVsdENNST1uZXcgRGVmYXVsdENNU2V0 dGVyKCk7CglhZGRDb250ZXh0SW50ZXJjZXB0b3IoIGRlZmF1bHRDTUkgKTsKCglXb3JrRGlySW50 ZXJjZXB0b3Igd2RJPW5ldyBXb3JrRGlySW50ZXJjZXB0b3IoKTsKCWFkZENvbnRleHRJbnRlcmNl cHRvciggd2RJICk7CgoKCUxvYWRPblN0YXJ0dXBJbnRlcmNlcHRvciBsb2FkT25TST1uZXcgTG9h ZE9uU3RhcnR1cEludGVyY2VwdG9yKCk7CglhZGRDb250ZXh0SW50ZXJjZXB0b3IoIGxvYWRPblNJ ICk7CgoJLy8gRGVidWcKCS8vIAlMb2dFdmVudHMgbG9nRXZlbnRzST1uZXcgTG9nRXZlbnRzKCk7 CgkvLyAJYWRkUmVxdWVzdEludGVyY2VwdG9yKCBsb2dFdmVudHNJICk7CgoJU2Vzc2lvbkludGVy Y2VwdG9yIHNlc3NJPW5ldyBTZXNzaW9uSW50ZXJjZXB0b3IoKTsKCWFkZFJlcXVlc3RJbnRlcmNl cHRvciggc2Vzc0kgKTsKCglTaW1wbGVNYXBwZXIxIG1hcEk9bmV3IFNpbXBsZU1hcHBlcjEoKTsK CWFkZFJlcXVlc3RJbnRlcmNlcHRvciggbWFwSSApOwoJbWFwSS5zZXREZWJ1ZygwKTsKCglJbnZv a2VySW50ZXJjZXB0b3IgaW52ST1uZXcgSW52b2tlckludGVyY2VwdG9yKCk7CglhZGRSZXF1ZXN0 SW50ZXJjZXB0b3IoIGludkkgKTsKCWludkkuc2V0RGVidWcoMCk7CgoJU3RhdGljSW50ZXJjZXB0 b3Igc3RhdGljST1uZXcgU3RhdGljSW50ZXJjZXB0b3IoKTsKCWFkZFJlcXVlc3RJbnRlcmNlcHRv ciggc3RhdGljSSApOwoJbWFwSS5zZXREZWJ1ZygwKTsKCglhZGRSZXF1ZXN0SW50ZXJjZXB0b3Io IG5ldyBTdGFuZGFyZFNlc3Npb25JbnRlcmNlcHRvcigpKTsKCgkvLyBhY2Nlc3MgY29udHJvbCAo IGZpbmQgaWYgYSByZXNvdXJjZSBoYXZlIGNvbnN0cmFpbnRzICkKCUFjY2Vzc0ludGVyY2VwdG9y IGFjY2Vzc0k9bmV3IEFjY2Vzc0ludGVyY2VwdG9yKCk7CglhZGRSZXF1ZXN0SW50ZXJjZXB0b3Io IGFjY2Vzc0kgKTsKCWFjY2Vzc0kuc2V0RGVidWcoMCk7CgoJLy8gc2V0IGNvbnRleHQgY2xhc3Mg bG9hZGVyCglKZGsxMkludGVyY2VwdG9yIGpkazEyST1uZXcgSmRrMTJJbnRlcmNlcHRvcigpOwoJ YWRkUmVxdWVzdEludGVyY2VwdG9yKCBqZGsxMkkgKTsKCgkvLyB4WFhYCgkvLwlhZGRSZXF1ZXN0 SW50ZXJjZXB0b3IoIG5ldyBTaW1wbGVSZWFsbSgpKTsKICAgIH0KCgogICAgLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0gVXRpbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHByaXZhdGUgdm9pZCBs b2coIFN0cmluZyBzICkgewoJU3lzdGVtLm91dC5wcmludGxuKCJXZWJBZGFwdGVyOiAiICsgcyAp OwogICAgfQoKICAgIC8qKiBTYW1wbGUgLSB5b3UgY2FuIHVzZSBpdCB0byB0b21jYXQKICAgICAq LwogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZyBhcmdzW10gKSB7Cgl0cnkgewoJ ICAgIEVtYmVkZWRUb21jYXQgdGM9bmV3IEVtYmVkZWRUb21jYXQoKTsKCSAgICB0Yy5zZXRXb3Jr RGlyKCAiL2hvbWUvY29zdGluL3NyYy9qYWthcnRhL2J1aWxkL3RvbWNhdC93b3JrIik7CgkgICAg U2VydmxldENvbnRleHQgc2N0eDsKCSAgICBzY3R4PXRjLmFkZENvbnRleHQoIiIsIG5ldyBVUkwK CQkoICJmaWxlOi9ob21lL2Nvc3Rpbi9zcmMvamFrYXJ0YS9idWlsZC90b21jYXQvd2ViYXBwcy9S T09UIikpOwoJICAgIHRjLmluaXRDb250ZXh0KCBzY3R4ICk7CgkgICAgc2N0eD10Yy5hZGRDb250 ZXh0KCIvZXhhbXBsZXMiLCBuZXcgVVJMCgkJKCJmaWxlOi9ob21lL2Nvc3Rpbi9zcmMvamFrYXJ0 YS9idWlsZC90b21jYXQvd2ViYXBwcy9leGFtcGxlcyIpKTsKCSAgICB0Yy5pbml0Q29udGV4dCgg c2N0eCApOwoJICAgIHRjLmFkZEVuZHBvaW50KCA4MDgwLCBudWxsLCBudWxsKTsKCSAgICB0Yy5z dGFydCgpOwoJfSBjYXRjaCAoVGhyb3dhYmxlIHQgKSB7CgkgICAgdC5wcmludFN0YWNrVHJhY2Uo KTsKCX0KICAgIH0KCgp9 ------_=_NextPart_001_01C05499.37499BC6--