Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 21619 invoked from network); 1 Oct 2007 07:47:14 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Oct 2007 07:47:14 -0000 Received: (qmail 5282 invoked by uid 500); 1 Oct 2007 07:47:03 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 5216 invoked by uid 500); 1 Oct 2007 07:47:03 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@cocoon.apache.org List-Id: Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 5205 invoked by uid 99); 1 Oct 2007 07:47:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 00:47:02 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of juanjo.vazquez@gmail.com designates 209.85.132.248 as permitted sender) Received: from [209.85.132.248] (HELO an-out-0708.google.com) (209.85.132.248) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 07:47:04 +0000 Received: by an-out-0708.google.com with SMTP id d23so881677and for ; Mon, 01 Oct 2007 00:46:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; bh=vrVExLiwVtQ+UoMNGQp4mPbZ0ndMD9q0UFZy/2kDA54=; b=PZ+ioIVdY8evyoa2wrpU66GiyCc3/DxHV0cxvBiJDk8tvu9963kz77K51mAPem5G7BZpcDnHKz751hxnchFz4OYAoQrxFy7LDfupk3CmynI36yshZLrDrdHD39sa0tD8RjRWAojJGhc95y8bkOSG05zCifboIGQNUuI9x+yKn2Y= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=Zo08faSQ06+15OePL91Q0R5NtLh2U82mcXKBsKsmBHMDnRHoVTUZ1K6ogKwKjlM7V+1budVOzJcxRIB9epyOW9NxquDDlerGKwGivcdqnrNYTHNfENKcLY0GWolEeLboidf5yzui6I3SrxQyA8EiCttnqMoL6L4Uvjz3lLKzCi0= Received: by 10.114.181.1 with SMTP id d1mr151076waf.1191224802007; Mon, 01 Oct 2007 00:46:42 -0700 (PDT) Received: by 10.140.185.5 with HTTP; Mon, 1 Oct 2007 00:46:41 -0700 (PDT) Message-ID: Date: Mon, 1 Oct 2007 09:46:41 +0200 From: "=?ISO-8859-1?Q?Juanjo_V=E1zquez?=" Sender: juanjo.vazquez@gmail.com To: dev@cocoon.apache.org Subject: Re: Problem with Cocoon Spring Configurator 1.0.0 and Weblogic 9.2 In-Reply-To: <46FFF8E7.6040603@nada.kth.se> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5546_30026288.1191224801990" References: <46FFF8E7.6040603@nada.kth.se> X-Google-Sender-Auth: 538663dc91f9ec48 X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_5546_30026288.1191224801990 Content-Type: multipart/alternative; boundary="----=_Part_5547_20836494.1191224801990" ------=_Part_5547_20836494.1191224801990 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, Thank you Daniel for your support and deep explanation. I have chosen the second solution because i don=B4t like a weblogic specifi= c code. I attach the resulting code DeploymentUtil class. Because of Weblogic is a very popular application server, I think this erro= r would be consider a bug and IMHO a patch should go in future cocoon releases. BR, Juanjo On 9/30/07, Daniel Fagerstrom wrote: > > Juanjo V=E1zquez skrev: > > Hi all, > > > > I=B4m working in an Cocoon 2.2-RC1 web application with one block. > > Everything is ok when i deploy to Tomcat but i=B4m getting errors when = i > > deploy to Weblogic 9.2. I have been looking for a workaround or a > > solution and it seems the problem is the blocks are not deployed to the > > public web directory in the weblogic domain. > > > > Everything points to the method "deployBlockResources" in > > "DeploymentUtil" class (cocoon-spring-configuratior-1.0.0.jar) is not > > working properly in this environment. I have been debugging the > > application deployed to weblogic with these discoveries: > > > > 1. Spring loads the jar configurations with zip protocol instead jar > > protocol, i.e. > > > zip:C:/bea/user_projects/domains/cm_domain/servers/AdminServer/tmp/_WL_us= er/proxy-ear/53xotj/war/WEB-INF/lib/cocoon- > servlet-service-impl-1.0.0-M2.jar!/META-INF/cocoon/spring/cocoon-callstac= k-environment.xml > > > > > > 2. In Runtime, the "URLConnection" class is a > > "weblogic.utils.ZipUrlConnection" not a "JarURLConnection" > > > > Can anybody help me with this problem? > > Some background: > > Blocks can contain resources that are intended to be available in e.g. > sitemaps. These resources are put in a directory called COB-INF at the > root of the directory structure of a block. The blocks are ordinary jars > that are put in WEB-INF/lib (during development the blocks can expanded > also). > > The task of DeploymentUtil.deployBlockResources is to search the class > path for all urls to COB-INF resources. If the url is of the type file: > the url and the block name is registred. Then the resources in the > COB-INF directory of the block is available through the blockcontext: > source. If the url is a jar, the resources in the COB-INF directory are > extracted to a temp directory in the file system and the url of the > extracted resources is registred together with the clock name. > > For Weblogic it seem like the classloader contains zip: urls for > resources. A solution would be to extend the > DeploymentUtil.deployBlockResources method with a case for the zip: > protocol, it would be similar to the jar: case but a little bit more > compliacted as the zip protocol doesn't know about mainfest attributes. > A problem with this is that the ZipUrlConnection is Weblogic specific, > so the protocol handling code in deployBlockResources would need to be > extracted to some components. > > Another, and much simpler solution if it works, would be to just replace > "zip:" with "jar:" in the url string, create a new url object from the > patched url string, and use the existing jar handling code. > > /Daniel > > ------=_Part_5547_20836494.1191224801990 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi,

Thank you Daniel for your support and deep explanation.

= I have chosen the second solution because i don=B4t like a weblogic specifi= c code. I attach the resulting code DeploymentUtil class.

Because of= Weblogic is a very popular application server, I think this error would be= consider a bug and IMHO a patch should go in future cocoon releases.

BR,

Juanjo

On 9/30/= 07, Daniel Fagerstrom <danielf@nada.kth.se> wrote: Juanjo V=E1zquez skrev:
> Hi all,
>
> I=B4m working in an= Cocoon 2.2-RC1 web application with one block.
> Everything is ok wh= en i deploy to Tomcat but i=B4m getting errors when i
> deploy to Web= logic=20 9.2. I have been looking for a workaround  or a
> solution = and it seems the problem is the blocks are not deployed to the
> publ= ic web directory in the weblogic domain.
>
> Everything points = to the method "deployBlockResources" in
> "DeploymentUtil" class (cocoon-spring-configuratior-1.0.= 0.jar) is not
> working properly in this environment. I have been deb= ugging the
> application deployed to weblogic with these discoveries:
>
> 1. Spring loads the jar configurations with zip protocol i= nstead jar
> protocol, i.e.
> zip:C:/bea/user_projects/domains/= cm_domain/servers/AdminServer/tmp/_WL_user/proxy-ear/53xotj/war/WEB-INF/lib= /cocoon- servlet-service-impl-1.0.0-M2.jar!/META-INF/cocoon/spring/cocoon-callstack-= environment.xml
>
>
> 2. In Runtime, the "URLConnect= ion" class is a
> "weblogic.utils.ZipUrlConnection" no= t a "JarURLConnection"
>
> Can anybody help me with this problem?

Some backgro= und:

Blocks can contain resources that are intended to be available = in e.g.
sitemaps. These resources are put in a directory called COB-INF = at the
root of the directory structure of a block. The blocks are ordinary jar= s
that are put in WEB-INF/lib (during development the blocks can expande= d
also).

The task of DeploymentUtil.deployBlockResources is to se= arch the class
path for all urls to COB-INF resources. If the url is of the type file:=
the url and the block name is registred. Then the resources in the
C= OB-INF directory of the block is available through the blockcontext:
source. If the url is a jar, the resources in the COB-INF directory are
= extracted to a temp directory in the file system and the url of the
extr= acted resources is registred together with the clock name.

For Weblo= gic it seem like the classloader contains zip: urls for
resources. A solution would be to extend the
DeploymentUtil.deployBl= ockResources method with a case for the zip:
protocol, it would be simil= ar to the jar: case but a little bit more
compliacted as the zip protoco= l doesn't know about mainfest attributes.
A problem with this is that the ZipUrlConnection is Weblogic specific,<= br>so the protocol handling code in deployBlockResources would need to beextracted to some components.

Another, and much simpler solution i= f it works, would be to just replace
"zip:" with "jar:" in the url string, create a new = url object from the
patched url string, and use the existing jar handlin= g code.

/Daniel


------=_Part_5547_20836494.1191224801990-- ------=_Part_5546_30026288.1191224801990 Content-Type: text/java; name="DeploymentUtil.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="DeploymentUtil.java"; filename="DeploymentUtil.java" X-Attachment-Id: f_f78ofcux LyoNCiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1 bmRlciBvbmUgb3IgbW9yZQ0KICogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2Vl IHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoDQogKiB0aGlzIHdvcmsgZm9yIGFkZGl0 aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuDQogKiBUaGUg QVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW ZXJzaW9uIDIuMA0KICogKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgNCiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRh aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQogKg0KICogICBodHRwOi8vd3d3LmFwYWNoZS5v cmcvbGljZW5zZXMvTElDRU5TRS0yLjANCiAqDQogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQogKiBkaXN0cmlidXRl ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0K ICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl eHByZXNzIG9yIGltcGxpZWQuDQogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQogKiBsaW1pdGF0aW9ucyB1bmRlciB0 aGUgTGljZW5zZS4NCiAqLw0KcGFja2FnZSBvcmcuYXBhY2hlLmNvY29vbi5zcHJpbmcuY29uZmln dXJhdG9yLmltcGw7DQoNCmltcG9ydCBqYXZhLmlvLkZpbGU7DQppbXBvcnQgamF2YS5pby5GaWxl T3V0cHV0U3RyZWFtOw0KaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQppbXBvcnQgamF2YS5p by5JbnB1dFN0cmVhbTsNCmltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsNCmltcG9ydCBqYXZh Lm5ldC5KYXJVUkxDb25uZWN0aW9uOw0KaW1wb3J0IGphdmEubmV0LlVSTDsNCmltcG9ydCBqYXZh LnV0aWwuRW51bWVyYXRpb247DQppbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQppbXBvcnQgamF2 YS51dGlsLk1hcDsNCmltcG9ydCBqYXZhLnV0aWwuamFyLkphckZpbGU7DQppbXBvcnQgamF2YS51 dGlsLnppcC5aaXBFbnRyeTsNCg0KaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5JT1V0aWxz Ow0KaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZzsNCmltcG9ydCBvcmcuYXBh Y2hlLmNvbW1vbnMubG9nZ2luZy5Mb2dGYWN0b3J5Ow0KDQovKioNCiAqIEhlbHBlciBjbGFzcyBm b3IgZGVwbG95aW5nIHJlc291cmNlcyBmcm9tIHRoZSBibG9jayBhcnRpZmFjdHMuDQogKg0KICog QHZlcnNpb24gJElkOiBEZXBsb3ltZW50VXRpbC5qYXZhIDU1NTYwOCAyMDA3LTA3LTEyIDEyOjEy OjU0WiBmZWxpeGsgJA0KICogQHNpbmNlIDEuMA0KICovDQpwdWJsaWMgYWJzdHJhY3QgY2xhc3Mg RGVwbG95bWVudFV0aWwgew0KDQogICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBMb2cgbG9nZ2Vy ID0gTG9nRmFjdG9yeS5nZXRMb2coRGVwbG95bWVudFV0aWwuY2xhc3MpOw0KDQogICAgcHJvdGVj dGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkxPQ0tfUkVTT1VSQ0VTX1BBVEggPSAiQ09CLUlORiI7 DQoNCiAgICAvKioNCiAgICAgKiBEZXBsb3kgYWxsIGZpbGVzIHdpdGggYSBnaXZlbiBwcmVmaXgg ZnJvbSBhIGphciBmaWxlIHRvIGEgZGlyZWN0b3J5DQogICAgICogaW4gdGhlIGZpbGUgc3lzdGVt Lg0KICAgICAqIEBwYXJhbSBqYXJGaWxlICAgICAgVGhlIGphciBmaWxlIGNvbnRhaW5pbmcgdGhl IHJlc291cmNlcy4NCiAgICAgKiBAcGFyYW0gcHJlZml4ICAgICAgIFRoZSBjb21tb24gcHJlZml4 IGZvciB0aGUgZmlsZXMuDQogICAgICogQHBhcmFtIGRlc3RpbmF0aW9uICBUaGUgZGVzdGluYXRp b24gZGlyZWN0b3J5Lg0KICAgICAqIEB0aHJvd3MgSU9FeGNlcHRpb24NCiAgICAgKi8NCiAgICBw dWJsaWMgc3RhdGljIHZvaWQgZGVwbG95KEphckZpbGUgamFyRmlsZSwgU3RyaW5nIHByZWZpeCwg U3RyaW5nIGRlc3RpbmF0aW9uKQ0KICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgICAgIGlm ICggbG9nZ2VyLmlzRGVidWdFbmFibGVkKCkgKSB7DQogICAgICAgICAgICBsb2dnZXIuZGVidWco IkRlcGxveWluZyBqYXIgIiArIGphckZpbGUgKyAiIHRvICIgKyBkZXN0aW5hdGlvbik7DQogICAg ICAgIH0NCiAgICAgICAgLy8gRklYTUUgLSBXZSBzaG91bGQgY2hlY2sgaWYgYSBkZXBsb3kgaXMg cmVxdWlyZWQNCiAgICAgICAgZmluYWwgRW51bWVyYXRpb24gZW50cmllcyA9IGphckZpbGUuZW50 cmllcygpOw0KICAgICAgICB3aGlsZSAoZW50cmllcy5oYXNNb3JlRWxlbWVudHMoKSkgew0KICAg ICAgICAgICAgZmluYWwgWmlwRW50cnkgZW50cnkgPSAoWmlwRW50cnkpZW50cmllcy5uZXh0RWxl bWVudCgpOw0KICAgICAgICAgICAgaWYgKCAhZW50cnkuaXNEaXJlY3RvcnkoKSAmJiBlbnRyeS5n ZXROYW1lKCkuc3RhcnRzV2l0aChwcmVmaXgpICkgew0KICAgICAgICAgICAgICAgIGZpbmFsIFN0 cmluZyBmaWxlTmFtZSA9IGRlc3RpbmF0aW9uICsgZW50cnkuZ2V0TmFtZSgpLnN1YnN0cmluZyhw cmVmaXgubGVuZ3RoKCkpOw0KICAgICAgICAgICAgICAgIGZpbmFsIEZpbGUgb3V0ID0gbmV3IEZp bGUoZmlsZU5hbWUpOw0KICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBkaXJlY3RvcnkNCiAgICAg ICAgICAgICAgICBvdXQuZ2V0UGFyZW50RmlsZSgpLm1rZGlycygpOw0KICAgICAgICAgICAgICAg IA0KICAgICAgICAgICAgICAgIElucHV0U3RyZWFtIGluU3RyZWFtID0gbnVsbDsNCiAgICAgICAg ICAgICAgICBPdXRwdXRTdHJlYW0gb3V0U3RyZWFtID0gbnVsbDsNCiAgICAgICAgICAgICAgICB0 cnkgew0KICAgICAgICAgICAgICAgICAgICBpblN0cmVhbSA9IGphckZpbGUuZ2V0SW5wdXRTdHJl YW0oZW50cnkpOw0KICAgICAgICAgICAgICAgICAgICBvdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1 dFN0cmVhbShvdXQpOw0KICAgICAgICAgICAgICAgICAgICBJT1V0aWxzLmNvcHkoaW5TdHJlYW0s IG91dFN0cmVhbSk7DQogICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgICAgICAg ICAgICAgaWYgKG91dFN0cmVhbSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBv dXRTdHJlYW0uY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg ICAgICBpZiAoaW5TdHJlYW0gIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaW5T dHJlYW0uY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHByb3RlY3RlZCBzdGF0aWMg dm9pZCBkZXBsb3lCbG9ja1Jlc291cmNlcyhTdHJpbmcgcmVsYXRpdmVEaXJlY3RvcnksDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXN0aW5h dGlvbkRpcmVjdG9yeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTWFwICAgIGJsb2NrQ29udGV4dHMpDQogICAgdGhyb3dzIElPRXhjZXB0aW9uIHsNCiAg ICAgICAgZmluYWwgRW51bWVyYXRpb24gamFyVXJscyA9IERlcGxveW1lbnRVdGlsLmNsYXNzLmdl dENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VzKEJMT0NLX1JFU09VUkNFU19QQVRIKTsNCiAgICAg ICAgd2hpbGUgKCBqYXJVcmxzLmhhc01vcmVFbGVtZW50cygpICkgew0KICAgICAgICAgICAgZmlu YWwgVVJMIHJlc291cmNlVXJsID0gKFVSTClqYXJVcmxzLm5leHRFbGVtZW50KCk7DQoNCiAgICAg ICAgICAgIFN0cmluZyB1cmwgPSByZXNvdXJjZVVybC50b0V4dGVybmFsRm9ybSgpOw0KICAgICAg ICAgICAgaWYgKCAiZmlsZSIuZXF1YWxzKHJlc291cmNlVXJsLmdldFByb3RvY29sKCkpICkgew0K ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgY292ZXJzIHRoZSBzaXVhdGlvbiB3 aGVuIHRoZSBwcm9qZWN0IGlzIE1hdmVuIGdlbmVyYXRlZA0KICAgICAgICAgICAgICAgIC8vIGlm IHRoaXMgaXMgYSBmaWxlIHVybCBnZW5lcmF0ZWQgYnkgdGhlIE1hdmVuLA0KICAgICAgICAgICAg ICAgIC8vIGl0IGhhcyB0aGlzIGZvcm0gImZpbGU6e3VybH0ve2Jsb2NrIG5hbWV9L3RhcmdldC9j bGFzc2VzL0NPQi1JTkYNCiAgICAgICAgICAgICAgICBpbnQgcG9zID0gdXJsLmluZGV4T2YoIi90 YXJnZXQvY2xhc3Nlcy9DT0ItSU5GIik7DQogICAgICAgICAgICAgICAgLy8gZXh0cmFjdCBibG9j ayBuYW1lIChpZiBhbnkpDQogICAgICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7DQogICAgICAg ICAgICAgICAgICAgIFN0cmluZyBibG9ja05hbWUgPSB1cmwuc3Vic3RyaW5nKDAsIHBvcyk7DQog ICAgICAgICAgICAgICAgICAgIGJsb2NrTmFtZSA9IGJsb2NrTmFtZS5zdWJzdHJpbmcoYmxvY2tO YW1lLmxhc3RJbmRleE9mKCcvJykgKyAxKTsNCiAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0 ZXIgdGhlIHJvb3QgVVJMIGZvciB0aGUgYmxvY2sgcmVzb3VyY2VzDQogICAgICAgICAgICAgICAg ICAgIGJsb2NrQ29udGV4dHMucHV0KGJsb2NrTmFtZSwgdXJsKTsNCiAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9IGVsc2UgaWYgKCAiamFyIi5lcXVhbHMocmVzb3VyY2VVcmwuZ2V0UHJv dG9jb2woKSkgfHwgInppcCIuZXF1YWxzKHJlc291cmNlVXJsLmdldFByb3RvY29sKCkpICkgew0K ICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBqYXIgdXJsLCBpdCBoYXMgdGhpcyBmb3Jt OiAiamFyOnt1cmwtdG8tamFyfSEve3Jlc291cmNlLXBhdGh9Ig0KICAgICAgICAgICAgICAgIC8v IHRvIG9wZW4gdGhlIGphciwgd2UgY2FuIHNpbXBseSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciAi IS8iDQogICAgICAgICAgICAgICAgaW50IHBvcyA9IHVybC5pbmRleE9mKCchJyk7DQogICAgICAg ICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBwb3MrMik7IC8vICsyIGFzIHdlIGluY2x1 ZGUgIiEvIg0KICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICAgICAqIEluY2x1ZGVk IGJlY2F1c2Ugb2YgV2VibG9naWMgOS4yIGNsYXNzbG9hZGVyIGJlaGF2aW91ciANCiAgICAgICAg ICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICBpZiAoInppcCIuZXF1YWxzKHJlc291cmNlVXJs LmdldFByb3RvY29sKCkpKQ0KICAgICAgICAgICAgICAgIAkJdXJsID0gdXJsLnJlcGxhY2UoInpp cDoiLCAiamFyOmZpbGU6Iik7DQogICAgICAgICAgICAgICAgZmluYWwgVVJMIGphclVybCA9IG5l dyBVUkwodXJsKTsNCiAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgZmluYWwgSmFyVVJM Q29ubmVjdGlvbiBjb25uZWN0aW9uID0gKEphclVSTENvbm5lY3Rpb24pamFyVXJsLm9wZW5Db25u ZWN0aW9uKCk7DQogICAgICAgICAgICAgICAgZmluYWwgSmFyRmlsZSBqYXJGaWxlID0gY29ubmVj dGlvbi5nZXRKYXJGaWxlKCk7DQogICAgICAgICAgICAgICAgU3RyaW5nIGJsb2NrTmFtZSA9IGph ckZpbGUuZ2V0TWFuaWZlc3QoKS5nZXRNYWluQXR0cmlidXRlcygpLmdldFZhbHVlKCJDb2Nvb24t QmxvY2stTmFtZSIpOw0KICAgICAgICAgICAgICAgIGlmICggYmxvY2tOYW1lID09IG51bGwgKSB7 DQogICAgICAgICAgICAgICAgICAgIFN0cmluZyBqYXJQYXRoID0gamFyRmlsZS5nZXROYW1lKCk7 DQogICAgICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgamFyIG5hbWUNCiAgICAgICAgICAgICAg ICAgICAgU3RyaW5nIGphck5hbWUgPSBqYXJQYXRoLnN1YnN0cmluZyhqYXJQYXRoLmxhc3RJbmRl eE9mKEZpbGUuc2VwYXJhdG9yQ2hhcikgKyAxKTsNCiAgICAgICAgICAgICAgICAgICAgLy8gZHJv cCBmaWxlIGV4dGVuc2lvbg0KICAgICAgICAgICAgICAgICAgICBibG9ja05hbWUgPSBqYXJOYW1l LnN1YnN0cmluZygwLCBqYXJOYW1lLmxhc3RJbmRleE9mKCcuJykpOw0KICAgICAgICAgICAgICAg ICAgICAvLyBUT0RPIGhvdyBkbyB3ZSBzdHJpcCB2ZXJzaW9uIGZyb20gYmxvY2tOYW1lPw0KICAg ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdCdWZmZXIgYnVmZmVy ID0gbmV3IFN0cmluZ0J1ZmZlcihkZXN0aW5hdGlvbkRpcmVjdG9yeSk7DQogICAgICAgICAgICAg ICAgYnVmZmVyLmFwcGVuZChGaWxlLnNlcGFyYXRvckNoYXIpOw0KICAgICAgICAgICAgICAgIGJ1 ZmZlci5hcHBlbmQocmVsYXRpdmVEaXJlY3RvcnkpOw0KICAgICAgICAgICAgICAgIGJ1ZmZlci5h cHBlbmQoRmlsZS5zZXBhcmF0b3JDaGFyKTsNCiAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5k KGJsb2NrTmFtZSk7DQogICAgICAgICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gYnVmZmVy LnRvU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgZGVwbG95KGphckZpbGUsIEJMT0NLX1JFU09V UkNFU19QQVRILCBkZXN0aW5hdGlvbik7DQogICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhl IHJvb3QgVVJMIGZvciB0aGUgYmxvY2sgcmVzb3VyY2VzDQogICAgICAgICAgICAgICAgYmxvY2tD b250ZXh0cy5wdXQoYmxvY2tOYW1lLCBuZXcgRmlsZShkZXN0aW5hdGlvbikudG9VUkwoKS50b0V4 dGVybmFsRm9ybSgpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIHdlIG9ubHkgaGFu ZGxlIGphciBmaWxlcyBhbmQgb3JkaW5hcnkgZmlsZXMNCiAgICAgICAgICAgIC8vIFRPRE8gLSBT aG91bGQgd2UgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGl0J3Mgc29tZSBvdGhlciBwcm90b2NvbCB0 eXBlPyAob3IgbG9nPykNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBzdGF0aWMgTWFw IGRlcGxveUJsb2NrQXJ0aWZhY3RzKFN0cmluZyBkZXN0aW5hdGlvbkRpcmVjdG9yeSkNCiAgICB0 aHJvd3MgSU9FeGNlcHRpb24gew0KICAgICAgICBpZiAoIGRlc3RpbmF0aW9uRGlyZWN0b3J5ID09 IG51bGwgKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9u KCJEZXN0aW5hdGlvbiBtdXN0IG5vdCBiZSBudWxsLiIpOw0KICAgICAgICB9DQogICAgICAgIGZp bmFsIE1hcCBibG9ja0NvbnRleHRzID0gbmV3IEhhc2hNYXAoKTsNCiAgICAgICAgLy8gZGVwbG95 IGFsbCBhcnRpZmFjdHMgY29udGFpbmluZyBibG9jayByZXNvdXJjZXMNCiAgICAgICAgZGVwbG95 QmxvY2tSZXNvdXJjZXMoImJsb2NrcyIsIGRlc3RpbmF0aW9uRGlyZWN0b3J5LCBibG9ja0NvbnRl eHRzKTsNCiAgICAgICAgcmV0dXJuIGJsb2NrQ29udGV4dHM7DQogICAgfQ0KDQogICAgcHVibGlj IHN0YXRpYyB2b2lkIGRlcGxveUphclJlc291cmNlcyhTdHJpbmcgcGF0dGVybiwgU3RyaW5nIGRl c3RpbmF0aW9uRGlyZWN0b3J5KQ0KICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgICAgIGZp bmFsIEVudW1lcmF0aW9uIGphclVybHMgPSBEZXBsb3ltZW50VXRpbC5jbGFzcy5nZXRDbGFzc0xv YWRlcigpLmdldFJlc291cmNlcyhwYXR0ZXJuKTsNCiAgICAgICAgd2hpbGUgKCBqYXJVcmxzLmhh c01vcmVFbGVtZW50cygpICkgew0KICAgICAgICAgICAgZmluYWwgVVJMIHJlc291cmNlVXJsID0g KFVSTClqYXJVcmxzLm5leHRFbGVtZW50KCk7DQoNCiAgICAgICAgICAgIFN0cmluZyB1cmwgPSBy ZXNvdXJjZVVybC50b0V4dGVybmFsRm9ybSgpOw0KICAgICAgICAgICAgLy8gd2Ugb25seSBoYW5k bGUgamFycyENCiAgICAgICAgICAgIGlmICggImphciIuZXF1YWxzKHJlc291cmNlVXJsLmdldFBy b3RvY29sKCkpICkgew0KICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBqYXIgdXJsLCBp dCBoYXMgdGhpcyBmb3JtOiAiamFyOnt1cmwtdG8tamFyfSEve3Jlc291cmNlLXBhdGh9Ig0KICAg ICAgICAgICAgICAgIC8vIHRvIG9wZW4gdGhlIGphciwgd2UgY2FuIHNpbXBseSByZW1vdmUgZXZl cnl0aGluZyBhZnRlciAiIS8iDQogICAgICAgICAgICAgICAgaW50IHBvcyA9IHVybC5pbmRleE9m KCchJyk7DQogICAgICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBwb3MrMik7IC8v ICsyIGFzIHdlIGluY2x1ZGUgIiEvIg0KICAgICAgICAgICAgICAgIGZpbmFsIFVSTCBqYXJVcmwg PSBuZXcgVVJMKHVybCk7DQogICAgICAgICAgICAgICAgZmluYWwgSmFyVVJMQ29ubmVjdGlvbiBj b25uZWN0aW9uID0gKEphclVSTENvbm5lY3Rpb24pamFyVXJsLm9wZW5Db25uZWN0aW9uKCk7DQog ICAgICAgICAgICAgICAgZmluYWwgSmFyRmlsZSBqYXJGaWxlID0gY29ubmVjdGlvbi5nZXRKYXJG aWxlKCk7DQogICAgICAgICAgICAgICAgZGVwbG95KGphckZpbGUsIHBhdHRlcm4sIGRlc3RpbmF0 aW9uRGlyZWN0b3J5KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg== ------=_Part_5546_30026288.1191224801990--