Re: xalan usage in taglibs
Matthew Broadhead <[email protected]> Fri, 8 Dec 2017 12:58:22 +0100
| Newsgroups | gmane.comp.jakarta.taglibs.user |
|---|---|
| Message-ID | <[email protected]> |
--------------08DDA4133019168B3DB4F9BE Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit here is a patch which removes the xalan dependency. but it breaks the ForEachTagTest. i notice that every constructor generates a JSTLXPathCompiler. could it not be a singleton? On 07/12/2017 15:08, Matthew Broadhead wrote: > is there any other way to rewrite it so that it doesn't use > DTMManager? that would also keep the speed? is it a matter of > keeping the object in memory so that it doesn't have to keep building > fragments? > also could i build the old version that doesn't need DTMManager and > drop it in my system to see what effect it has? > > On 06/12/2017 14:30, Romain Manni-Bucau wrote: >> requires a classloader hack, no other trivial way, and that's why we >> removed it from tomee >> >> 2017-12-06 14:27 GMT+01:00 Matthew Broadhead >> <[email protected]>: >>> is there any way that i can get the correct xalan at runtime? >>> >>> to recap this is the code that is blowing up for me: >>> Reader xsl = new InputStreamReader(filepath.openStream()); >>> TransformerFactory transformerfactory = >>> TransformerFactory.newInstance(); >>> StreamSource ssXsl = new StreamSource(xsl); >>> ssXsl.setSystemId(filepath.toExternalForm()); >>> Templates templates = transformerfactory.newTemplates(ssXsl); >>> Transformer transformer = templates.newTransformer(); >>> >>> last line causes: >>> java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault >>> cannot be cast to org.apache.xml.dtm.DTMManager >>> at org.apache.xml.dtm.DTMManager.newInstance(DTMManager.java:137) >>> at org.apache.xpath.XPathContext.<init>(XPathContext.java:102) >>> at org.apache.xpath.XPathContext.<init>(XPathContext.java:349) >>> at org.apache.xpath.XPathContext.<init>(XPathContext.java:337) >>> at >>> org.apache.xalan.transformer.TransformerImpl.<init>(TransformerImpl.java:397) >>> >>> at >>> org.apache.xalan.templates.StylesheetRoot.newTransformer(StylesheetRoot.java:200) >>> >>> >>> maybe you know some way to find the Impl with the correct DTMManager? >>> >>> >>> On 30/11/2017 17:30, Romain Manni-Bucau wrote: >>>> 2017-11-30 16:51 GMT+01:00 Jeremy Boynes <[email protected]>: >>>>>> On Nov 30, 2017, at 3:14 AM, Matthew Broadhead >>>>>> <[email protected]> wrote: >>>>>> >>>>>> has anything been decided? if i try to redeploy a context in >>>>>> production >>>>>> all my xslt processors blow up. there should be a solution that >>>>>> fits all? >>>>> Taglibs (both Apache and Glassfish) has always had a dependency on >>>>> Xalan. >>>>> My understanding is that TomEE did not include it and so broke >>>>> users that >>>>> use the XML tags. If so, TomEE should fix that. >>>> Sadly this is not a bug on tomee but the best solution we went through >>>> after having delivered xalan for some releases. Xalan dependency >>>> breaks 80% of apps so no way to include it - and this is the issue of >>>> Matthew. Note it also affects simple apps in tomcat including taglib >>>> and other libs. >>>> >>>>> You can probably add Xalan to your TomEE installation somehow to work >>>>> around it but how to do that is really a question for the TomEE >>>>> users list. >>>>> >>>>> A patch for Taglibs that removes the Xalan dependency and doesn't >>>>> regress >>>>> the #27717 performance fix would be great. A patch that removed the >>>>> dependency but regressed performance would have to be evaluated at >>>>> the time. >>>>> The previous decision was not to do that. >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------08DDA4133019168B3DB4F9BE Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="apache-taglibs-trunk.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="apache-taglibs-trunk.patch" SW5kZXg6IGFwYWNoZS10YWdsaWJzLXRydW5rL2ltcGwvcG9tLnhtbAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3BvbS54bWwJKHJldmlzaW9uIDE4MTU4 OTMpCisrKyBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3BvbS54bWwJKHdvcmtpbmcgY29w eSkKQEAgLTkxLDEzICs5MSwxMyBAQAogICAgICAgICAgICAgPHZlcnNpb24+MS4wPC92ZXJz aW9uPgogICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4KICAgICAgICAgPC9k ZXBlbmRlbmN5PgotICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgPCEtLSA8ZGVwZW5k ZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPnhhbGFuPC9ncm91cElkPgogICAgICAgICAg ICAgPGFydGlmYWN0SWQ+eGFsYW48L2FydGlmYWN0SWQ+CiAgICAgICAgICAgICA8dmVyc2lv bj4yLjcuMTwvdmVyc2lvbj4KICAgICAgICAgICAgIDxzY29wZT5wcm92aWRlZDwvc2NvcGU+ CiAgICAgICAgICAgICA8b3B0aW9uYWw+dHJ1ZTwvb3B0aW9uYWw+Ci0gICAgICAgIDwvZGVw ZW5kZW5jeT4KKyAgICAgICAgPC9kZXBlbmRlbmN5PiAtLT4KIAogICAgICAgICA8ZGVwZW5k ZW5jeT4KICAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgpJbmRleDogYXBh Y2hlLXRhZ2xpYnMtdHJ1bmsvaW1wbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvdGFnbGli cy9zdGFuZGFyZC90YWcvY29tbW9uL3htbC9FeHByU3VwcG9ydC5qYXZhCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGFwYWNoZS10YWdsaWJzLXRydW5rL2ltcGwvc3JjL21haW4vamF2YS9vcmcvYXBh Y2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2NvbW1vbi94bWwvRXhwclN1cHBvcnQuamF2YQko cmV2aXNpb24gMTgxNTg5MykKKysrIGFwYWNoZS10YWdsaWJzLXRydW5rL2ltcGwvc3JjL21h aW4vamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2NvbW1vbi94bWwvRXhw clN1cHBvcnQuamF2YQkod29ya2luZyBjb3B5KQpAQCAtMjIsNTIgKzIyLDU1IEBACiBpbXBv cnQgamF2YXguc2VydmxldC5qc3AuSnNwRXhjZXB0aW9uOwogaW1wb3J0IGphdmF4LnNlcnZs ZXQuanNwLkpzcFRhZ0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC50YWdl eHQuVGFnU3VwcG9ydDsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVy RXhjZXB0aW9uOworLy9pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4 Y2VwdGlvbjsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC51dGlsLkVz Y2FwZVhNTDsKLWltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoOwotaW1wb3J0IG9yZy5h cGFjaGUueHBhdGguWFBhdGhDb250ZXh0OworaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5z dGFuZGFyZC54cGF0aC5KU1RMWFBhdGhDb21waWxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRh Z2xpYnMuc3RhbmRhcmQueHBhdGguSlNUTFhQYXRoRXhwcmVzc2lvbjsKK2ltcG9ydCBvcmcu YXBhY2hlLnRhZ2xpYnMuc3RhbmRhcmQueHBhdGguSlNUTFhQYXRoRmFjdG9yeTsKKy8vaW1w b3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGg7CisvL2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRo LlhQYXRoQ29udGV4dDsKIAogLyoqCi0gKiBUYWcgaGFuZGxlciBmb3IgJmx0O291dCZndDsg aW4gSlNUTCdzIFhNTCBsaWJyYXJ5LgotICogVE9ETzogc2hvdWxkIHdlIHJlbmFtZSB0aGlz IHRvIE91dFN1cHBvcnQgdG8gbWF0Y2ggdGhlIHRhZyBuYW1lPworICogVGFnIGhhbmRsZXIg Zm9yICZsdDtvdXQmZ3Q7IGluIEpTVEwncyBYTUwgbGlicmFyeS4gVE9ETzogc2hvdWxkIHdl IHJlbmFtZQorICogdGhpcyB0byBPdXRTdXBwb3J0IHRvIG1hdGNoIHRoZSB0YWcgbmFtZT8K ICAqCiAgKiBAYXV0aG9yIFNoYXduIEJheWVybgogICovCiBwdWJsaWMgYWJzdHJhY3QgY2xh c3MgRXhwclN1cHBvcnQgZXh0ZW5kcyBUYWdTdXBwb3J0IHsKIAotICAgIHByaXZhdGUgWFBh dGggc2VsZWN0OwotICAgIHByb3RlY3RlZCBib29sZWFuIGVzY2FwZVhtbCA9IHRydWU7ICAv LyB0YWcgYXR0cmlidXRlCisJcHJpdmF0ZSBKU1RMWFBhdGhDb21waWxlciBjb21waWxlcjsK Kwlwcml2YXRlIEpTVExYUGF0aEV4cHJlc3Npb24gc2VsZWN0OworCXByb3RlY3RlZCBib29s ZWFuIGVzY2FwZVhtbCA9IHRydWU7IC8vIHRhZyBhdHRyaWJ1dGUKIAotICAgIEBPdmVycmlk ZQotICAgIHB1YmxpYyB2b2lkIHJlbGVhc2UoKSB7Ci0gICAgICAgIHN1cGVyLnJlbGVhc2Uo KTsKLSAgICAgICAgc2VsZWN0ID0gbnVsbDsKLSAgICB9CisJcHVibGljIEV4cHJTdXBwb3J0 KCkgeworCQlKU1RMWFBhdGhGYWN0b3J5IHhwZiA9IEpTVExYUGF0aEZhY3RvcnkuZ2V0RmFj dG9yeSgpOworCQljb21waWxlciA9IHhwZi5uZXdDb21waWxlcigpOworCX0KIAotICAgIC8v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi0gICAgLy8gVGFnIGxvZ2ljCisJQE92ZXJyaWRlCisJcHVibGlj IHZvaWQgcmVsZWFzZSgpIHsKKwkJc3VwZXIucmVsZWFzZSgpOworCQljb21waWxlciA9IG51 bGw7CisJCXNlbGVjdCA9IG51bGw7CisJfQogCi0gICAgLy8gYXBwbGllcyBYUGF0aCBleHBy ZXNzaW9uIGZyb20gJ3NlbGVjdCcgYW5kIHByaW50cyB0aGUgcmVzdWx0Ci0gICAgQE92ZXJy aWRlCi0gICAgcHVibGljIGludCBkb1N0YXJ0VGFnKCkgdGhyb3dzIEpzcEV4Y2VwdGlvbiB7 Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBYUGF0aENvbnRleHQgY29udGV4dCA9IFhh bGFuVXRpbC5nZXRDb250ZXh0KHRoaXMsIHBhZ2VDb250ZXh0KTsKLSAgICAgICAgICAgIFN0 cmluZyByZXN1bHQgPSBzZWxlY3QuZXhlY3V0ZShjb250ZXh0LCBjb250ZXh0LmdldEN1cnJl bnROb2RlKCksIG51bGwpLnN0cigpOwotICAgICAgICAgICAgRXNjYXBlWE1MLmVtaXQocmVz dWx0LCBlc2NhcGVYbWwsIHBhZ2VDb250ZXh0LmdldE91dCgpKTsKLSAgICAgICAgICAgIHJl dHVybiBTS0lQX0JPRFk7Ci0gICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7Ci0g ICAgICAgICAgICB0aHJvdyBuZXcgSnNwVGFnRXhjZXB0aW9uKGV4LnRvU3RyaW5nKCksIGV4 KTsKLSAgICAgICAgfSBjYXRjaCAoVHJhbnNmb3JtZXJFeGNlcHRpb24gZSkgewotICAgICAg ICAgICAgdGhyb3cgbmV3IEpzcFRhZ0V4Y2VwdGlvbihlKTsKLSAgICAgICAgfQotICAgIH0K KwkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKwkvLyBUYWcgbG9naWMKIAotICAgIHB1YmxpYyB2b2lk IHNldFNlbGVjdChTdHJpbmcgc2VsZWN0KSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAg ICB0aGlzLnNlbGVjdCA9IG5ldyBYUGF0aChzZWxlY3QsIG51bGwsIG51bGwsIFhQYXRoLlNF TEVDVCk7Ci0gICAgICAgIH0gY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGUpIHsKLSAg ICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcigpOwotICAgICAgICB9Ci0gICAg fQorCS8vIGFwcGxpZXMgWFBhdGggZXhwcmVzc2lvbiBmcm9tICdzZWxlY3QnIGFuZCBwcmlu dHMgdGhlIHJlc3VsdAorCUBPdmVycmlkZQorCXB1YmxpYyBpbnQgZG9TdGFydFRhZygpIHRo cm93cyBKc3BFeGNlcHRpb24geworCQl0cnkgeworCQkJU3RyaW5nIHJlc3VsdCA9IHNlbGVj dC5ldmFsdWF0ZVN0cmluZyhGb3JFYWNoVGFnLmdldENvbnRleHQodGhpcyksIHBhZ2VDb250 ZXh0KTsKKwkJCUVzY2FwZVhNTC5lbWl0KHJlc3VsdCwgZXNjYXBlWG1sLCBwYWdlQ29udGV4 dC5nZXRPdXQoKSk7CisJCQlyZXR1cm4gU0tJUF9CT0RZOworCQl9IGNhdGNoIChJT0V4Y2Vw dGlvbiBleCkgeworCQkJdGhyb3cgbmV3IEpzcFRhZ0V4Y2VwdGlvbihleC50b1N0cmluZygp LCBleCk7CisJCX0KKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTZWxlY3QoU3RyaW5nIHNlbGVj dCkgeworCQl0aGlzLnNlbGVjdCA9IGNvbXBpbGVyLmNvbXBpbGUoc2VsZWN0KTsKKwl9CiB9 CkluZGV4OiBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3NyYy9tYWluL2phdmEvb3JnL2Fw YWNoZS90YWdsaWJzL3N0YW5kYXJkL3RhZy9jb21tb24veG1sL0ZvckVhY2hUYWcuamF2YQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3NyYy9tYWluL2ph dmEvb3JnL2FwYWNoZS90YWdsaWJzL3N0YW5kYXJkL3RhZy9jb21tb24veG1sL0ZvckVhY2hU YWcuamF2YQkocmV2aXNpb24gMTgxNTg5MykKKysrIGFwYWNoZS10YWdsaWJzLXRydW5rL2lt cGwvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2NvbW1v bi94bWwvRm9yRWFjaFRhZy5qYXZhCSh3b3JraW5nIGNvcHkpCkBAIC0xNywxNiArMTcsMjMg QEAKIAogcGFja2FnZSBvcmcuYXBhY2hlLnRhZ2xpYnMuc3RhbmRhcmQudGFnLmNvbW1vbi54 bWw7CiAKLWltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC5Kc3BFeGNlcHRpb247CisvL2ltcG9y dCBqYXZheC5zZXJ2bGV0LmpzcC5Kc3BFeGNlcHRpb247CiBpbXBvcnQgamF2YXguc2Vydmxl dC5qc3AuSnNwVGFnRXhjZXB0aW9uOwogaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLmpzdGwu Y29yZS5Mb29wVGFnU3VwcG9ydDsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5z Zm9ybWVyRXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLnRhZ2V4dC5UYWc7 CitpbXBvcnQgamF2YXguc2VydmxldC5qc3AudGFnZXh0LlRhZ1N1cHBvcnQ7CisvL2ltcG9y dCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOwogCi1pbXBvcnQg b3JnLmFwYWNoZS54bWwuZHRtLkRUTUl0ZXJhdG9yOwotaW1wb3J0IG9yZy5hcGFjaGUueHBh dGguWFBhdGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQ7Ci1pbXBv cnQgb3JnLmFwYWNoZS54cGF0aC5vYmplY3RzLlhPYmplY3Q7CitpbXBvcnQgb3JnLmFwYWNo ZS50YWdsaWJzLnN0YW5kYXJkLnhwYXRoLkpTVExYUGF0aENvbXBpbGVyOworaW1wb3J0IG9y Zy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC54cGF0aC5KU1RMWFBhdGhDb250ZXh0OworaW1w b3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC54cGF0aC5KU1RMWFBhdGhFeHByZXNz aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC54cGF0aC5KU1RMWFBh dGhGYWN0b3J5OwogCisvL2ltcG9ydCBvcmcuYXBhY2hlLnhtbC5kdG0uRFRNSXRlcmF0b3I7 CisvL2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoOworLy9pbXBvcnQgb3JnLmFwYWNo ZS54cGF0aC5YUGF0aENvbnRleHQ7CisvL2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLm9iamVj dHMuWE9iamVjdDsKKwogLyoqCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiAmbHQ7eDpmb3JFYWNo Jmd0OyB0YWcgdXNpbmcgbG93LWxldmVsIFhhbGFuIEFQSS4KICAqCkBAIC0zNSw5NSArNDIs ODUgQEAKICAqLwogcHVibGljIGNsYXNzIEZvckVhY2hUYWcgZXh0ZW5kcyBMb29wVGFnU3Vw cG9ydCB7CiAKLSAgICBwcml2YXRlIFhQYXRoIHNlbGVjdDsKLSAgICBwcml2YXRlIFhQYXRo Q29udGV4dCBjb250ZXh0OworCXByaXZhdGUgSlNUTFhQYXRoQ29tcGlsZXIgY29tcGlsZXI7 CisJcHJpdmF0ZSBKU1RMWFBhdGhFeHByZXNzaW9uIHNlbGVjdDsKKwlwcml2YXRlIEpTVExY UGF0aENvbnRleHQgY29udGV4dDsKIAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lk IHJlbGVhc2UoKSB7Ci0gICAgICAgIHN1cGVyLnJlbGVhc2UoKTsKLSAgICAgICAgc2VsZWN0 ID0gbnVsbDsKLSAgICAgICAgY29udGV4dCA9IG51bGw7Ci0gICAgfQorCXB1YmxpYyBGb3JF YWNoVGFnKCkgeworCQlKU1RMWFBhdGhGYWN0b3J5IHhwZiA9IEpTVExYUGF0aEZhY3Rvcnku Z2V0RmFjdG9yeSgpOworCQljb21waWxlciA9IHhwZi5uZXdDb21waWxlcigpOworCX0KIAot ICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHByZXBhcmUoKSB0aHJvd3MgSnNw VGFnRXhjZXB0aW9uIHsKLSAgICAgICAgY29udGV4dCA9IFhhbGFuVXRpbC5nZXRDb250ZXh0 KHRoaXMsIHBhZ2VDb250ZXh0KTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFhPYmpl Y3Qgbm9kZXMgPSBzZWxlY3QuZXhlY3V0ZShjb250ZXh0LCBjb250ZXh0LmdldEN1cnJlbnRO b2RlKCksIG51bGwpOworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIHJlbGVhc2UoKSB7CisJ CXN1cGVyLnJlbGVhc2UoKTsKKwkJY29tcGlsZXIgPSBudWxsOworCQlzZWxlY3QgPSBudWxs OworCQljb250ZXh0ID0gbnVsbDsKKwl9CiAKLSAgICAgICAgICAgIC8vIGNyZWF0ZSBhbiBp dGVyYXRvciBvdmVyIHRoZSByZXR1cm5lZCBub2RlcyBhbmQgcHVzaCBpbnRvIHRoZSBjb250 ZXh0Ci0gICAgICAgICAgICBEVE1JdGVyYXRvciBpdGVyYXRvciA9IG5vZGVzLml0ZXIoKTsK LSAgICAgICAgICAgIGNvbnRleHQucHVzaENvbnRleHROb2RlTGlzdChpdGVyYXRvcik7Ci0g ICAgICAgIH0gY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAg IHRocm93IG5ldyBKc3BUYWdFeGNlcHRpb24oZSk7Ci0gICAgICAgIH0KLSAgICB9CisJQE92 ZXJyaWRlCisJcHJvdGVjdGVkIHZvaWQgcHJlcGFyZSgpIHRocm93cyBKc3BUYWdFeGNlcHRp b24geworCQljb250ZXh0ID0gc2VsZWN0Lml0ZXJhdGUoZ2V0Q29udGV4dCh0aGlzKSwgcGFn ZUNvbnRleHQpOworCX0KIAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCBib29sZWFu IGhhc05leHQoKSB0aHJvd3MgSnNwVGFnRXhjZXB0aW9uIHsKLSAgICAgICAgRFRNSXRlcmF0 b3IgaXRlcmF0b3IgPSBjb250ZXh0LmdldENvbnRleHROb2RlTGlzdCgpOwotICAgICAgICBy ZXR1cm4gaXRlcmF0b3IuZ2V0Q3VycmVudFBvcygpIDwgaXRlcmF0b3IuZ2V0TGVuZ3RoKCk7 Ci0gICAgfQorCUBPdmVycmlkZQorCXByb3RlY3RlZCBib29sZWFuIGhhc05leHQoKSB0aHJv d3MgSnNwVGFnRXhjZXB0aW9uIHsKKwkJcmV0dXJuIGNvbnRleHQuaGFzTmV4dCgpOworCX0K IAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCBPYmplY3QgbmV4dCgpIHRocm93cyBK c3BUYWdFeGNlcHRpb24gewotICAgICAgICBEVE1JdGVyYXRvciBpdGVyYXRvciA9IGNvbnRl eHQuZ2V0Q29udGV4dE5vZGVMaXN0KCk7Ci0gICAgICAgIGludCBuZXh0ID0gaXRlcmF0b3Iu bmV4dE5vZGUoKTsKLSAgICAgICAgY29udGV4dC5wdXNoQ3VycmVudE5vZGUobmV4dCk7Ci0g ICAgICAgIHJldHVybiBpdGVyYXRvci5nZXREVE0obmV4dCkuZ2V0Tm9kZShuZXh0KTsKLSAg ICB9CisJQE92ZXJyaWRlCisJcHJvdGVjdGVkIE9iamVjdCBuZXh0KCkgdGhyb3dzIEpzcFRh Z0V4Y2VwdGlvbiB7CisJCXJldHVybiBjb250ZXh0Lm5leHQoKTsKKwl9CiAKLSAgICBAT3Zl cnJpZGUKLSAgICBwdWJsaWMgaW50IGRvQWZ0ZXJCb2R5KCkgdGhyb3dzIEpzcEV4Y2VwdGlv biB7Ci0gICAgICAgIC8vIHBvcCB0aGUgY29udGV4dCBub2RlIGFmdGVyIGV4ZWN1dGluZyB0 aGUgYm9keQotICAgICAgICBjb250ZXh0LnBvcEN1cnJlbnROb2RlKCk7Ci0gICAgICAgIHJl dHVybiBzdXBlci5kb0FmdGVyQm9keSgpOwotICAgIH0KKwkvLyBAT3ZlcnJpZGUKKwkvLyBw dWJsaWMgaW50IGRvQWZ0ZXJCb2R5KCkgdGhyb3dzIEpzcEV4Y2VwdGlvbiB7CisJLy8gLy8g cG9wIHRoZSBjb250ZXh0IG5vZGUgYWZ0ZXIgZXhlY3V0aW5nIHRoZSBib2R5CisJLy8gY29u dGV4dC5wb3BDdXJyZW50Tm9kZSgpOworCS8vIHJldHVybiBzdXBlci5kb0FmdGVyQm9keSgp OworCS8vIH0KKwkvLworCS8vIEBPdmVycmlkZQorCS8vIHB1YmxpYyB2b2lkIGRvRmluYWxs eSgpIHsKKwkvLyAvLyBjb250ZXh0IG1pZ2h0IGJlIG51bGwgYXMgcHJlcGFyZSBpcyBub3Qg Y2FsbGVkIGlmIGVuZCA8IGJlZ2luCisJLy8gaWYgKGNvbnRleHQgIT0gbnVsbCkgeworCS8v IC8vIHBvcCB0aGUgbGlzdCBvZiBub2RlcyBiZWluZyBpdGVyYXRlZAorCS8vIGNvbnRleHQu cG9wQ29udGV4dE5vZGVMaXN0KCk7CisJLy8gY29udGV4dCA9IG51bGw7CisJLy8gfQorCS8v IHN1cGVyLmRvRmluYWxseSgpOworCS8vIH0KIAotICAgIEBPdmVycmlkZQotICAgIHB1Ymxp YyB2b2lkIGRvRmluYWxseSgpIHsKLSAgICAgICAgLy8gY29udGV4dCBtaWdodCBiZSBudWxs IGFzIHByZXBhcmUgaXMgbm90IGNhbGxlZCBpZiBlbmQgPCBiZWdpbgotICAgICAgICBpZiAo Y29udGV4dCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBwb3AgdGhlIGxpc3Qgb2Ygbm9k ZXMgYmVpbmcgaXRlcmF0ZWQKLSAgICAgICAgICAgIGNvbnRleHQucG9wQ29udGV4dE5vZGVM aXN0KCk7Ci0gICAgICAgICAgICBjb250ZXh0ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAg ICBzdXBlci5kb0ZpbmFsbHkoKTsKLSAgICB9CisJcHVibGljIHZvaWQgc2V0U2VsZWN0KFN0 cmluZyBzZWxlY3QpIHsKKwkJdGhpcy5zZWxlY3QgPSBjb21waWxlci5jb21waWxlKHNlbGVj dCk7CisJfQogCi0gICAgcHVibGljIHZvaWQgc2V0U2VsZWN0KFN0cmluZyBzZWxlY3QpIHsK LSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0gbmV3IFhQYXRoKHNl bGVjdCwgbnVsbCwgbnVsbCwgWFBhdGguU0VMRUNUKTsKLSAgICAgICAgfSBjYXRjaCAoVHJh bnNmb3JtZXJFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlv bkVycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9CisJcHVibGljIHZvaWQgc2V0QmVnaW4oaW50 IGJlZ2luKSB0aHJvd3MgSnNwVGFnRXhjZXB0aW9uIHsKKwkJdGhpcy5iZWdpblNwZWNpZmll ZCA9IHRydWU7CisJCXRoaXMuYmVnaW4gPSBiZWdpbjsKKwkJdmFsaWRhdGVCZWdpbigpOwor CX0KIAotICAgIHB1YmxpYyB2b2lkIHNldEJlZ2luKGludCBiZWdpbikgdGhyb3dzIEpzcFRh Z0V4Y2VwdGlvbiB7Ci0gICAgICAgIHRoaXMuYmVnaW5TcGVjaWZpZWQgPSB0cnVlOwotICAg ICAgICB0aGlzLmJlZ2luID0gYmVnaW47Ci0gICAgICAgIHZhbGlkYXRlQmVnaW4oKTsKLSAg ICB9CisJcHVibGljIHZvaWQgc2V0RW5kKGludCBlbmQpIHRocm93cyBKc3BUYWdFeGNlcHRp b24geworCQl0aGlzLmVuZFNwZWNpZmllZCA9IHRydWU7CisJCXRoaXMuZW5kID0gZW5kOwor CQl2YWxpZGF0ZUVuZCgpOworCX0KIAotICAgIHB1YmxpYyB2b2lkIHNldEVuZChpbnQgZW5k KSB0aHJvd3MgSnNwVGFnRXhjZXB0aW9uIHsKLSAgICAgICAgdGhpcy5lbmRTcGVjaWZpZWQg PSB0cnVlOwotICAgICAgICB0aGlzLmVuZCA9IGVuZDsKLSAgICAgICAgdmFsaWRhdGVFbmQo KTsKLSAgICB9CisJcHVibGljIHZvaWQgc2V0U3RlcChpbnQgc3RlcCkgdGhyb3dzIEpzcFRh Z0V4Y2VwdGlvbiB7CisJCXRoaXMuc3RlcFNwZWNpZmllZCA9IHRydWU7CisJCXRoaXMuc3Rl cCA9IHN0ZXA7CisJCXZhbGlkYXRlU3RlcCgpOworCX0KIAotICAgIHB1YmxpYyB2b2lkIHNl dFN0ZXAoaW50IHN0ZXApIHRocm93cyBKc3BUYWdFeGNlcHRpb24gewotICAgICAgICB0aGlz LnN0ZXBTcGVjaWZpZWQgPSB0cnVlOwotICAgICAgICB0aGlzLnN0ZXAgPSBzdGVwOwotICAg ICAgICB2YWxpZGF0ZVN0ZXAoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm4g dGhlIGN1cnJlbnQgWFBhdGggY29udGV4dCB0byBzdXBwb3J0IGV4cHJlc3Npb24gZXZhbHVh dGlvbiBpbiBuZXN0ZWQgdGFncy4KLSAgICAgKgotICAgICAqIEByZXR1cm4gdGhlIGN1cnJl bnQgWFBhdGggY29udGV4dAotICAgICAqLwotICAgIFhQYXRoQ29udGV4dCBnZXRDb250ZXh0 KCkgewotICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9CisJLyogUmV0cmlldmVzIHRo ZSBjdXJyZW50IGNvbnRleHQuICovCisJcHVibGljIHN0YXRpYyBKU1RMWFBhdGhDb250ZXh0 IGdldENvbnRleHQoVGFnIGNoaWxkKSB7CisJCUZvckVhY2hUYWcgZm9yRWFjaFRhZyA9IChG b3JFYWNoVGFnKSBUYWdTdXBwb3J0LmZpbmRBbmNlc3RvcldpdGhDbGFzcyhjaGlsZCwgRm9y RWFjaFRhZy5jbGFzcyk7CisJCWlmIChmb3JFYWNoVGFnID09IG51bGwpIHsKKwkJCXJldHVy biBudWxsOworCQl9IGVsc2UgeworCQkJcmV0dXJuIGZvckVhY2hUYWcuY29udGV4dDsKKwkJ fQorCX0KIH0KLQpJbmRleDogYXBhY2hlLXRhZ2xpYnMtdHJ1bmsvaW1wbC9zcmMvbWFpbi9q YXZhL29yZy9hcGFjaGUvdGFnbGlicy9zdGFuZGFyZC90YWcvY29tbW9uL3htbC9JZlRhZy5q YXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGFwYWNoZS10YWdsaWJzLXRydW5rL2ltcGwvc3JjL21h aW4vamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2NvbW1vbi94bWwvSWZU YWcuamF2YQkocmV2aXNpb24gMTgxNTg5MykKKysrIGFwYWNoZS10YWdsaWJzLXRydW5rL2lt cGwvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2NvbW1v bi94bWwvSWZUYWcuamF2YQkod29ya2luZyBjb3B5KQpAQCAtMTksMTMgKzE5LDE4IEBACiAK IGltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC5Kc3BUYWdFeGNlcHRpb247CiBpbXBvcnQgamF2 YXguc2VydmxldC5qc3AuanN0bC5jb3JlLkNvbmRpdGlvbmFsVGFnU3VwcG9ydDsKLWltcG9y dCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworLy9pbXBvcnQg amF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKIAotaW1wb3J0IG9y Zy5hcGFjaGUueHBhdGguWFBhdGg7Ci1pbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENv bnRleHQ7CitpbXBvcnQgb3JnLmFwYWNoZS50YWdsaWJzLnN0YW5kYXJkLnhwYXRoLkpTVExY UGF0aENvbXBpbGVyOworaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC54cGF0 aC5KU1RMWFBhdGhFeHByZXNzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFu ZGFyZC54cGF0aC5KU1RMWFBhdGhGYWN0b3J5OworLy9pbXBvcnQgb3JnLmFwYWNoZS54cGF0 aC5YUGF0aDsKKy8vaW1wb3J0IG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0OwogCiAv KioKLSAqIDxwPlRhZyBoYW5kbGVyIGZvciAmbHQ7aWYmZ3Q7IGluIEpTVEwncyBYTUwgbGli cmFyeS48L3A+CisgKiA8cD4KKyAqIFRhZyBoYW5kbGVyIGZvciAmbHQ7aWYmZ3Q7IGluIEpT VEwncyBYTUwgbGlicmFyeS4KKyAqIDwvcD4KICAqCiAgKiBAYXV0aG9yIFNoYXduIEJheWVy bgogICovCkBAIC0zMiwzMCArMzcsMjcgQEAKIAogcHVibGljIGNsYXNzIElmVGFnIGV4dGVu ZHMgQ29uZGl0aW9uYWxUYWdTdXBwb3J0IHsKIAotICAgIHByaXZhdGUgWFBhdGggc2VsZWN0 OworCXByaXZhdGUgSlNUTFhQYXRoQ29tcGlsZXIgY29tcGlsZXI7CisJcHJpdmF0ZSBKU1RM WFBhdGhFeHByZXNzaW9uIHNlbGVjdDsKIAorCXB1YmxpYyBJZlRhZygpIHsKKwkJSlNUTFhQ YXRoRmFjdG9yeSB4cGYgPSBKU1RMWFBhdGhGYWN0b3J5LmdldEZhY3RvcnkoKTsKKwkJY29t cGlsZXIgPSB4cGYubmV3Q29tcGlsZXIoKTsKKwl9CiAKLSAgICBAT3ZlcnJpZGUKLSAgICBw dWJsaWMgdm9pZCByZWxlYXNlKCkgewotICAgICAgICBzdXBlci5yZWxlYXNlKCk7Ci0gICAg ICAgIHNlbGVjdCA9IG51bGw7Ci0gICAgfQorCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIHJl bGVhc2UoKSB7CisJCXN1cGVyLnJlbGVhc2UoKTsKKwkJY29tcGlsZXIgPSBudWxsOworCQlz ZWxlY3QgPSBudWxsOworCX0KIAotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCBib29s ZWFuIGNvbmRpdGlvbigpIHRocm93cyBKc3BUYWdFeGNlcHRpb24gewotICAgICAgICBYUGF0 aENvbnRleHQgY29udGV4dCA9IFhhbGFuVXRpbC5nZXRDb250ZXh0KHRoaXMsIHBhZ2VDb250 ZXh0KTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBzZWxlY3QuYm9vbChj b250ZXh0LCBjb250ZXh0LmdldEN1cnJlbnROb2RlKCksIG51bGwpOwotICAgICAgICB9IGNh dGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcg SnNwVGFnRXhjZXB0aW9uKGUpOwotICAgICAgICB9Ci0gICAgfQorCUBPdmVycmlkZQorCXBy b3RlY3RlZCBib29sZWFuIGNvbmRpdGlvbigpIHRocm93cyBKc3BUYWdFeGNlcHRpb24gewor CQlyZXR1cm4gc2VsZWN0LmV2YWx1YXRlQm9vbGVhbihGb3JFYWNoVGFnLmdldENvbnRleHQo dGhpcyksIHBhZ2VDb250ZXh0KTsKKwl9CiAKLSAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Qo U3RyaW5nIHNlbGVjdCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgdGhpcy5zZWxl Y3QgPSBuZXcgWFBhdGgoc2VsZWN0LCBudWxsLCBudWxsLCBYUGF0aC5TRUxFQ1QpOwotICAg ICAgICB9IGNhdGNoIChUcmFuc2Zvcm1lckV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB0 aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoKTsKLSAgICAgICAgfQotICAgIH0KKwlwdWJsaWMg dm9pZCBzZXRTZWxlY3QoU3RyaW5nIHNlbGVjdCkgeworCQl0aGlzLnNlbGVjdCA9IGNvbXBp bGVyLmNvbXBpbGUoc2VsZWN0KTsKKwl9CiB9CkluZGV4OiBhcGFjaGUtdGFnbGlicy10cnVu ay9pbXBsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90YWdsaWJzL3N0YW5kYXJkL3RhZy9j b21tb24veG1sL1NldFRhZy5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGFwYWNoZS10YWdsaWJz LXRydW5rL2ltcGwvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQv dGFnL2NvbW1vbi94bWwvU2V0VGFnLmphdmEJKHJldmlzaW9uIDE4MTU4OTMpCisrKyBhcGFj aGUtdGFnbGlicy10cnVuay9pbXBsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS90YWdsaWJz L3N0YW5kYXJkL3RhZy9jb21tb24veG1sL1NldFRhZy5qYXZhCSh3b3JraW5nIGNvcHkpCkBA IC0xOCw3MCArMTgsNzMgQEAKIHBhY2thZ2Ugb3JnLmFwYWNoZS50YWdsaWJzLnN0YW5kYXJk LnRhZy5jb21tb24ueG1sOwogCiBpbXBvcnQgamF2YXguc2VydmxldC5qc3AuSnNwRXhjZXB0 aW9uOwotaW1wb3J0IGphdmF4LnNlcnZsZXQuanNwLkpzcFRhZ0V4Y2VwdGlvbjsKKy8vaW1w b3J0IGphdmF4LnNlcnZsZXQuanNwLkpzcFRhZ0V4Y2VwdGlvbjsKIGltcG9ydCBqYXZheC5z ZXJ2bGV0LmpzcC5QYWdlQ29udGV4dDsKIGltcG9ydCBqYXZheC5zZXJ2bGV0LmpzcC50YWdl eHQuVGFnU3VwcG9ydDsKLWltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVy RXhjZXB0aW9uOworLy9pbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4 Y2VwdGlvbjsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC50YWcuY29t bW9uLmNvcmUuVXRpbDsKLWltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRoOwotaW1wb3J0 IG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0OwotaW1wb3J0IG9yZy5hcGFjaGUueHBh dGgub2JqZWN0cy5YT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFy ZC54cGF0aC5KU1RMWFBhdGhDb21waWxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnRhZ2xpYnMu c3RhbmRhcmQueHBhdGguSlNUTFhQYXRoRXhwcmVzc2lvbjsKK2ltcG9ydCBvcmcuYXBhY2hl LnRhZ2xpYnMuc3RhbmRhcmQueHBhdGguSlNUTFhQYXRoRmFjdG9yeTsKKy8vaW1wb3J0IG9y Zy5hcGFjaGUueHBhdGguWFBhdGg7CisvL2ltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRo Q29udGV4dDsKKy8vaW1wb3J0IG9yZy5hcGFjaGUueHBhdGgub2JqZWN0cy5YT2JqZWN0Owog CiAvKioKLSAqIDxwPlRhZyBoYW5kbGVyIGZvciAmbHQ7c2V0Jmd0OyBpbiBKU1RMJ3MgWE1M IGxpYnJhcnkuPC9wPgorICogPHA+CisgKiBUYWcgaGFuZGxlciBmb3IgJmx0O3NldCZndDsg aW4gSlNUTCdzIFhNTCBsaWJyYXJ5LgorICogPC9wPgogICoKICAqIEBhdXRob3IgU2hhd24g QmF5ZXJuCiAgKi8KIHB1YmxpYyBjbGFzcyBTZXRUYWcgZXh0ZW5kcyBUYWdTdXBwb3J0IHsK IAotICAgIHByaXZhdGUgWFBhdGggc2VsZWN0OwotICAgIHByaXZhdGUgU3RyaW5nIHZhcjsK LSAgICBwcml2YXRlIGludCBzY29wZSA9IFBhZ2VDb250ZXh0LlBBR0VfU0NPUEU7CisJcHJp dmF0ZSBKU1RMWFBhdGhDb21waWxlciBjb21waWxlcjsKKwlwcml2YXRlIEpTVExYUGF0aEV4 cHJlc3Npb24gc2VsZWN0OworCXByaXZhdGUgU3RyaW5nIHZhcjsKKwlwcml2YXRlIGludCBz Y29wZSA9IFBhZ2VDb250ZXh0LlBBR0VfU0NPUEU7CiAKLSAgICAvLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgotICAgIC8vIENvbnN0cnVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24KKwkvLyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKwkvLyBDb25zdHJ1Y3Rpb24gYW5kIGluaXRpYWxpemF0aW9uCiAKLSAgICBA T3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCByZWxlYXNlKCkgewotICAgICAgICBzdXBlci5y ZWxlYXNlKCk7Ci0gICAgICAgIHNlbGVjdCA9IG51bGw7Ci0gICAgICAgIHZhciA9IG51bGw7 Ci0gICAgfQorCXB1YmxpYyBTZXRUYWcoKSB7CisJCUpTVExYUGF0aEZhY3RvcnkgeHBmID0g SlNUTFhQYXRoRmFjdG9yeS5nZXRGYWN0b3J5KCk7CisJCWNvbXBpbGVyID0geHBmLm5ld0Nv bXBpbGVyKCk7CisJfQogCi0gICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAvLyBUYWcgbG9n aWMKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCByZWxlYXNlKCkgeworCQlzdXBlci5yZWxl YXNlKCk7CisJCWNvbXBpbGVyID0gbnVsbDsKKwkJc2VsZWN0ID0gbnVsbDsKKwkJdmFyID0g bnVsbDsKKwl9CiAKLSAgICAvLyBhcHBsaWVzIFhQYXRoIGV4cHJlc3Npb24gZnJvbSAnc2Vs ZWN0JyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gJ3ZhcicKKwkvLyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKwkvLyBUYWcgbG9naWMKIAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyBpbnQgZG9T dGFydFRhZygpIHRocm93cyBKc3BFeGNlcHRpb24gewotICAgICAgICB0cnkgewotICAgICAg ICAgICAgWFBhdGhDb250ZXh0IGNvbnRleHQgPSBYYWxhblV0aWwuZ2V0Q29udGV4dCh0aGlz LCBwYWdlQ29udGV4dCk7Ci0gICAgICAgICAgICBYT2JqZWN0IHJlc3VsdCA9IHNlbGVjdC5l eGVjdXRlKGNvbnRleHQsIGNvbnRleHQuZ2V0Q3VycmVudE5vZGUoKSwgbnVsbCk7Ci0gICAg ICAgICAgICBwYWdlQ29udGV4dC5zZXRBdHRyaWJ1dGUodmFyLCBYYWxhblV0aWwuY29lcmNl VG9KYXZhKHJlc3VsdCksIHNjb3BlKTsKLSAgICAgICAgICAgIHJldHVybiBTS0lQX0JPRFk7 Ci0gICAgICAgIH0gY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGUpIHsKLSAgICAgICAg ICAgIHRocm93IG5ldyBKc3BUYWdFeGNlcHRpb24oZSk7Ci0gICAgICAgIH0KLSAgICB9CisJ Ly8gYXBwbGllcyBYUGF0aCBleHByZXNzaW9uIGZyb20gJ3NlbGVjdCcgYW5kIHN0b3JlcyB0 aGUgcmVzdWx0IGluICd2YXInCiAKLSAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgIC8vIEF0 dHJpYnV0ZSBhY2Nlc3NvcnMKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgaW50IGRvU3RhcnRUYWco KSB0aHJvd3MgSnNwRXhjZXB0aW9uIHsKKwkJT2JqZWN0IHJlc3VsdCA9IHNlbGVjdC5ldmFs dWF0ZU9iamVjdChGb3JFYWNoVGFnLmdldENvbnRleHQodGhpcyksIHBhZ2VDb250ZXh0KTsK KwkJcGFnZUNvbnRleHQuc2V0QXR0cmlidXRlKHZhciwgcmVzdWx0LCBzY29wZSk7CisJCXJl dHVybiBTS0lQX0JPRFk7CisJfQogCi0gICAgcHVibGljIHZvaWQgc2V0U2VsZWN0KFN0cmlu ZyBzZWxlY3QpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHRoaXMuc2VsZWN0ID0g bmV3IFhQYXRoKHNlbGVjdCwgbnVsbCwgbnVsbCwgWFBhdGguU0VMRUNUKTsKLSAgICAgICAg fSBjYXRjaCAoVHJhbnNmb3JtZXJFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cg bmV3IEFzc2VydGlvbkVycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9CisJLy8gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisJLy8gQXR0cmlidXRlIGFjY2Vzc29ycwogCi0gICAgcHVibGljIHZvaWQgc2V0 VmFyKFN0cmluZyB2YXIpIHsKLSAgICAgICAgdGhpcy52YXIgPSB2YXI7Ci0gICAgfQorCXB1 YmxpYyB2b2lkIHNldFNlbGVjdChTdHJpbmcgc2VsZWN0KSB7CisJCXRoaXMuc2VsZWN0ID0g Y29tcGlsZXIuY29tcGlsZShzZWxlY3QpOworCX0KIAotICAgIHB1YmxpYyB2b2lkIHNldFNj b3BlKFN0cmluZyBzY29wZSkgewotICAgICAgICB0aGlzLnNjb3BlID0gVXRpbC5nZXRTY29w ZShzY29wZSk7Ci0gICAgfQorCXB1YmxpYyB2b2lkIHNldFZhcihTdHJpbmcgdmFyKSB7CisJ CXRoaXMudmFyID0gdmFyOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNjb3BlKFN0cmluZyBz Y29wZSkgeworCQl0aGlzLnNjb3BlID0gVXRpbC5nZXRTY29wZShzY29wZSk7CisJfQogfQpJ bmRleDogYXBhY2hlLXRhZ2xpYnMtdHJ1bmsvaW1wbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFj aGUvdGFnbGlicy9zdGFuZGFyZC90YWcvY29tbW9uL3htbC9XaGVuVGFnLmphdmEKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gYXBhY2hlLXRhZ2xpYnMtdHJ1bmsvaW1wbC9zcmMvbWFpbi9qYXZhL29y Zy9hcGFjaGUvdGFnbGlicy9zdGFuZGFyZC90YWcvY29tbW9uL3htbC9XaGVuVGFnLmphdmEJ KHJldmlzaW9uIDE4MTU4OTMpCisrKyBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3NyYy9t YWluL2phdmEvb3JnL2FwYWNoZS90YWdsaWJzL3N0YW5kYXJkL3RhZy9jb21tb24veG1sL1do ZW5UYWcuamF2YQkod29ya2luZyBjb3B5KQpAQCAtMTgsMTQgKzE4LDE5IEBACiBwYWNrYWdl IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC50YWcuY29tbW9uLnhtbDsKIAogaW1wb3J0 IGphdmF4LnNlcnZsZXQuanNwLkpzcFRhZ0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC54bWwu dHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uOworLy9pbXBvcnQgamF2YXgueG1sLnRy YW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbjsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGFn bGlicy5zdGFuZGFyZC50YWcuY29tbW9uLmNvcmUuV2hlblRhZ1N1cHBvcnQ7Ci1pbXBvcnQg b3JnLmFwYWNoZS54cGF0aC5YUGF0aDsKLWltcG9ydCBvcmcuYXBhY2hlLnhwYXRoLlhQYXRo Q29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnRhZ2xpYnMuc3RhbmRhcmQueHBhdGguSlNU TFhQYXRoQ29tcGlsZXI7CitpbXBvcnQgb3JnLmFwYWNoZS50YWdsaWJzLnN0YW5kYXJkLnhw YXRoLkpTVExYUGF0aEV4cHJlc3Npb247CitpbXBvcnQgb3JnLmFwYWNoZS50YWdsaWJzLnN0 YW5kYXJkLnhwYXRoLkpTVExYUGF0aEZhY3Rvcnk7CisvL2ltcG9ydCBvcmcuYXBhY2hlLnhw YXRoLlhQYXRoOworLy9pbXBvcnQgb3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQ7CiAK IC8qKgotICogPHA+VGFnIGhhbmRsZXIgZm9yICZsdDtpZiZndDsgaW4gSlNUTCdzIFhNTCBs aWJyYXJ5LjwvcD4KKyAqIDxwPgorICogVGFnIGhhbmRsZXIgZm9yICZsdDtpZiZndDsgaW4g SlNUTCdzIFhNTCBsaWJyYXJ5LgorICogPC9wPgogICoKICAqIEBhdXRob3IgU2hhd24gQmF5 ZXJuCiAgKi8KQEAgLTMyLDI5ICszNywyNyBAQAogCiBwdWJsaWMgY2xhc3MgV2hlblRhZyBl eHRlbmRzIFdoZW5UYWdTdXBwb3J0IHsKIAotICAgIHByaXZhdGUgWFBhdGggc2VsZWN0Owor CXByaXZhdGUgSlNUTFhQYXRoQ29tcGlsZXIgY29tcGlsZXI7CisJcHJpdmF0ZSBKU1RMWFBh dGhFeHByZXNzaW9uIHNlbGVjdDsKIAotICAgIEBPdmVycmlkZQotICAgIHB1YmxpYyB2b2lk IHJlbGVhc2UoKSB7Ci0gICAgICAgIHN1cGVyLnJlbGVhc2UoKTsKLSAgICAgICAgc2VsZWN0 ID0gbnVsbDsKLSAgICB9CisJcHVibGljIFdoZW5UYWcoKSB7CisJCUpTVExYUGF0aEZhY3Rv cnkgeHBmID0gSlNUTFhQYXRoRmFjdG9yeS5nZXRGYWN0b3J5KCk7CisJCWNvbXBpbGVyID0g eHBmLm5ld0NvbXBpbGVyKCk7CisJfQogCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVk IGJvb2xlYW4gY29uZGl0aW9uKCkgdGhyb3dzIEpzcFRhZ0V4Y2VwdGlvbiB7Ci0gICAgICAg IFhQYXRoQ29udGV4dCBjb250ZXh0ID0gWGFsYW5VdGlsLmdldENvbnRleHQodGhpcywgcGFn ZUNvbnRleHQpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIHNlbGVjdC5i b29sKGNvbnRleHQsIGNvbnRleHQuZ2V0Q3VycmVudE5vZGUoKSwgbnVsbCk7Ci0gICAgICAg IH0gY2F0Y2ggKFRyYW5zZm9ybWVyRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIHRocm93 IG5ldyBKc3BUYWdFeGNlcHRpb24oZSk7Ci0gICAgICAgIH0KLSAgICB9CisJQE92ZXJyaWRl CisJcHVibGljIHZvaWQgcmVsZWFzZSgpIHsKKwkJc3VwZXIucmVsZWFzZSgpOworCQljb21w aWxlciA9IG51bGw7CisJCXNlbGVjdCA9IG51bGw7CisJfQogCi0gICAgcHVibGljIHZvaWQg c2V0U2VsZWN0KFN0cmluZyBzZWxlY3QpIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg IHRoaXMuc2VsZWN0ID0gbmV3IFhQYXRoKHNlbGVjdCwgbnVsbCwgbnVsbCwgWFBhdGguU0VM RUNUKTsKLSAgICAgICAgfSBjYXRjaCAoVHJhbnNmb3JtZXJFeGNlcHRpb24gZSkgewotICAg ICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCk7Ci0gICAgICAgIH0KLSAgICB9 CisJQE92ZXJyaWRlCisJcHJvdGVjdGVkIGJvb2xlYW4gY29uZGl0aW9uKCkgdGhyb3dzIEpz cFRhZ0V4Y2VwdGlvbiB7CisJCXJldHVybiBzZWxlY3QuZXZhbHVhdGVCb29sZWFuKEZvckVh Y2hUYWcuZ2V0Q29udGV4dCh0aGlzKSwgcGFnZUNvbnRleHQpOworCX0KKworCXB1YmxpYyB2 b2lkIHNldFNlbGVjdChTdHJpbmcgc2VsZWN0KSB7CisJCXRoaXMuc2VsZWN0ID0gY29tcGls ZXIuY29tcGlsZShzZWxlY3QpOworCX0KIH0KSW5kZXg6IGFwYWNoZS10YWdsaWJzLXRydW5r L2ltcGwvc3JjL3Rlc3QvamF2YS9vcmcvYXBhY2hlL3RhZ2xpYnMvc3RhbmRhcmQvdGFnL2Nv bW1vbi94bWwvRm9yRWFjaFRhZ1Rlc3QuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcGFjaGUt dGFnbGlicy10cnVuay9pbXBsL3NyYy90ZXN0L2phdmEvb3JnL2FwYWNoZS90YWdsaWJzL3N0 YW5kYXJkL3RhZy9jb21tb24veG1sL0ZvckVhY2hUYWdUZXN0LmphdmEJKHJldmlzaW9uIDE4 MTU4OTMpCisrKyBhcGFjaGUtdGFnbGlicy10cnVuay9pbXBsL3NyYy90ZXN0L2phdmEvb3Jn L2FwYWNoZS90YWdsaWJzL3N0YW5kYXJkL3RhZy9jb21tb24veG1sL0ZvckVhY2hUYWdUZXN0 LmphdmEJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIGltcG9ydCBvcmcuanVu aXQuVGVzdDsKIAogaW1wb3J0IG9yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC51dGlsLlht bFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS50YWdsaWJzLnN0YW5kYXJkLnhwYXRoLkpTVExY UGF0aENvbnRleHQ7CiBpbXBvcnQgb3JnLmFwYWNoZS54bWwuZHRtLkRUTUl0ZXJhdG9yOwog aW1wb3J0IG9yZy5hcGFjaGUueHBhdGguQ2FjaGVkWFBhdGhBUEk7CiBpbXBvcnQgb3JnLmFw YWNoZS54cGF0aC5YUGF0aDsKQEAgLTgyLDcgKzgzLDcgQEAKICAgICAgICAgdGFnLnNldFNl bGVjdCgiJGRvYy9yb290L2EvbnVtIik7CiAgICAgICAgIHJlcGxheShwYWdlQ29udGV4dCk7 CiAgICAgICAgIHRhZy5wcmVwYXJlKCk7Ci0gICAgICAgIFhQYXRoQ29udGV4dCBjb250ZXh0 ID0gdGFnLmdldENvbnRleHQoKTsKKyAgICAgICAgSlNUTFhQYXRoQ29udGV4dCBjb250ZXh0 ID0gdGFnLmdldENvbnRleHQoKTsKICAgICAgICAgQXNzZXJ0LmFzc2VydFRydWUodGFnLmhh c05leHQoKSk7CiAgICAgICAgIE5vZGUgb25lID0gKE5vZGUpIHRhZy5uZXh0KCk7CiAgICAg ICAgIGFzc2VydEVxdWFscygib25lIiwgb25lLmdldFRleHRDb250ZW50KCkpOwo= --------------08DDA4133019168B3DB4F9BE Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------08DDA4133019168B3DB4F9BE--