anything wrong?- beginner problem

"Zhang Weishan" <[email protected]> Sat, 3 May 2003 16:12:32 +0800
Newsgroups gmane.comp.java.aspectwerkz
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C3114B.BF14907F
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_002_01C3114B.BF14907F"


------_=_NextPart_002_01C3114B.BF14907F
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello everyone,=20

  I tried to run the simple logging advice with a Notepad example, but I
was in trouble. All the used files, including the xml definition file,
compiled and source logging advice, compiled and source Notepad reside
in one directory named test. I jar the complied logging advice and
Notepad into a notepad.jar.

  The logging advice which is almost the same as the original one, the
only difference is that I removed the package declaration to make life
easier.

  Here is the xml definition file which resides:

<aspectwerkz>

    <advice name=3D"xmt"

        advice=3D"LoggingAdvice"

        deploymentModel=3D"perClass"/>

=20

    <aspect class=3D"Notepad">

        <pointcut type=3D"method" pattern=3D"n.*">

            <advice-ref name=3D"xmt"/>

        </pointcut>

    </aspect>

=20

  Here is the command I used to invoke the framework.

C:\aspectwerkz>aspectwerkz -cp
test/notepad.jar;lib/commons-collections-2.1.jar

-Daspectwerkz.definition.file=3Dtest/samples.xml
-Daspectwerkz.metadata.dir=3D_metaD

ata Notepad

=20

The notepad runs but there is no logging info displayed in the console.
No matter what the method pattern, for example, set.*, n.*, it simply
did not work.

=20

Thanks,

Weishan

=20


------_=_NextPart_002_01C3114B.BF14907F
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">


<meta name=3DGenerator content=3D"Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:SimSun;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Times;
	panose-1:2 2 6 3 5 4 5 2 3 4;}
@font-face
	{font-family:"\@SimSun";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
p.StyleStyleHeading1Before0ptAfter0ptTimesNewRoman, =
li.StyleStyleHeading1Before0ptAfter0ptTimesNewRoman, =
div.StyleStyleHeading1Before0ptAfter0ptTimesNewRoman
	{margin-top:0cm;
	margin-right:0cm;
	margin-bottom:6.0pt;
	margin-left:0cm;
	text-align:justify;
	line-height:150%;
	page-break-after:avoid;
	font-size:14.0pt;
	font-family:Times;
	font-weight:bold;}
span.EmailStyle18
	{font-family:Arial;
	color:windowtext;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 ol
	{margin-bottom:0cm;}
ul
	{margin-bottom:0cm;}
-->
</style>

</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Hello everyone, </span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp; I tried to run the simple logging advice with =
a
Notepad example, but I was in trouble. All the used files, including the =
xml
definition file, compiled and source logging advice, compiled and source
Notepad reside in one directory named test. I jar the complied logging =
advice
and Notepad into a notepad.jar.</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp; The logging advice which is almost the same as =
the original
one, the only difference is that I removed the package declaration to =
make life
easier.</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp; Here is the xml definition file which =
resides:</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&lt;aspectwerkz&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; &lt;advice =
name=3D&quot;xmt&quot;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
advice=3D&quot;LoggingAdvice&quot;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
deploymentModel=3D&quot;perClass&quot;/&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; &lt;aspect =
class=3D&quot;Notepad&quot;&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&lt;pointcut
type=3D&quot;method&quot; =
pattern=3D&quot;n.*&quot;&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;
&lt;advice-ref name=3D&quot;xmt&quot;/&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&lt;/pointcut&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;&nbsp;&nbsp; &lt;/aspect&gt;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp; Here is the command I used to invoke the =
framework.</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>C:\aspectwerkz&gt;aspectwerkz -cp
test/notepad.jar;lib/commons-collections-2.1.jar</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>-Daspectwerkz.definition.file=3Dtest/samples.xml =
-Daspectwerkz.metadata.dir=3D_metaD</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>ata Notepad</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>The notepad runs but there is no logging info =
displayed in
the console. No matter what the method pattern, for example, set.*, n.*, =
it
simply did not work.</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Thanks,</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Weishan</span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>&nbsp;</span></font></p>

</div>

</body>

</html>

------_=_NextPart_002_01C3114B.BF14907F--

------_=_NextPart_001_01C3114B.BF14907F
Content-Type: application/octet-stream;
	name="Notepad.java"
Content-Transfer-Encoding: base64
Content-Description: Notepad.java
Content-Disposition: attachment;
	filename="Notepad.java"

aW1wb3J0IGphdmEuYXd0Lio7CmltcG9ydCBqYXZhLmF3dC5ldmVudC4qOwppbXBvcnQgamF2YS5p
by4qOwppbXBvcnQgamF2YS51dGlsLio7CgppbXBvcnQgamF2YXguc3dpbmcudGV4dC4qOwppbXBv
cnQgamF2YXguc3dpbmcuZXZlbnQuKjsKaW1wb3J0IGphdmF4LnN3aW5nLio7CgoKCmNsYXNzIE5v
dGVwYWQgZXh0ZW5kcyBKUGFuZWwgewoKICAgIE5vdGVwYWQoKSB7CglzdXBlcigpOwoKICAgICAg
U3RyaW5nIGxmQ2xhc3NOYW1lOwogICAgICAKCQkKCQkKCQkgICBsZkNsYXNzTmFtZSA9ICJjb20u
c3VuLmphdmEuc3dpbmcucGxhZi5tb3RpZi5Nb3RpZkxvb2tBbmRGZWVsIjsKCQkKCQkJCgkKCgl0
cnkgewogICAgICAgICAgVUlNYW5hZ2VyLnNldExvb2tBbmRGZWVsKGxmQ2xhc3NOYW1lKTsKCX0g
Y2F0Y2ggKEV4Y2VwdGlvbiBleGMpIHsKICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ291
bGQgbm90IGxvYWQgTG9va0FuZEZlZWw6ICIgKyBsZkNsYXNzTmFtZSk7Cgl9CgoJc2V0Qm9yZGVy
KEJvcmRlckZhY3RvcnkuY3JlYXRlRXRjaGVkQm9yZGVyKCkpOwoJc2V0TGF5b3V0KG5ldyBCb3Jk
ZXJMYXlvdXQoKSk7CgkKCUpTY3JvbGxQYW5lIHNjcm9sbGVyID0gbmV3IEpTY3JvbGxQYW5lKCk7
CglKVmlld3BvcnQgcG9ydCA9IHNjcm9sbGVyLmdldFZpZXdwb3J0KCk7Cglwb3J0LmFkZChlZGl0
b3IpOwoKCUpQYW5lbCBwYW5lbCA9IG5ldyBKUGFuZWwoKTsKCXBhbmVsLnNldExheW91dChuZXcg
Qm9yZGVyTGF5b3V0KCkpOwkKCXBhbmVsLmFkZCgiTm9ydGgiLHRvb2xiYXIpOwoJcGFuZWwuYWRk
KCJDZW50ZXIiLCBzY3JvbGxlcik7CgoJYWRkKCJDZW50ZXIiLCBwYW5lbCk7CglhZGQoIk5vcnRo
IiwgbWVudWJhcik7CglhZGQoIlNvdXRoIiwgc3RhdHVzYmFyKTsKICAgIH0KCiAgICBwdWJsaWMg
c3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgdHJ5IHsKCQlKRnJhbWUg
ZnJhbWUgPSBuZXcgSkZyYW1lKCk7CgkJZnJhbWUuc2V0VGl0bGUoIkEgTm90ZXBhZCIpOwogICAg
ICAgICAgIAlmcmFtZS5zZXRCYWNrZ3JvdW5kKENvbG9yLmxpZ2h0R3JheSk7CgoJCgkJZnJhbWUu
Z2V0Q29udGVudFBhbmUoKS5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKCQlmcmFtZS5n
ZXRDb250ZW50UGFuZSgpLmFkZCgiQ2VudGVyIiwgbmV3IE5vdGVwYWQoKSk7CgkJZnJhbWUucGFj
aygpOwoJCWZyYW1lLnNldFNpemUoNTAwLCA2MDApOwogICAgICAKCgkJZnJhbWUuYWRkV2luZG93
TGlzdGVuZXIobmV3IEFwcENsb3NlcigpKTsKCQlmcmFtZS5zaG93KCk7CiAgICAgICAgfSBjYXRj
aCAoVGhyb3dhYmxlIHQpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeGNlcHRp
b246ICIgKyB0KTsKICAgICAgICAgICAgdC5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9CiAg
ICB9ICAgICAgICAKCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGNsYXNzIEFwcENsb3NlciBl
eHRlbmRzIFdpbmRvd0FkYXB0ZXIgewogICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3Npbmco
V2luZG93RXZlbnQgZSkgewoJICAKCSAgCgkgICAgICBTeXN0ZW0uZXhpdCgwKTsKCSAgCgl9CiAg
ICB9CgogICAgCgogIAoKCgogICAgcHJpdmF0ZSBKVGV4dENvbXBvbmVudCBlZGl0b3IgPSBjcmVh
dGVFZGl0b3IoKTsKCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gZWRpdG9yIHRvIHJlcHJlc2Vu
dCB0aGUgZ2l2ZW4gZG9jdW1lbnQuICAKICAgICAqLwogICAgcHJvdGVjdGVkIEpUZXh0Q29tcG9u
ZW50IGNyZWF0ZUVkaXRvcigpIHsKICAgICAgCgkgICAgSlRleHRDb21wb25lbnQgZWRpdG9yID0g
bmV3IEpUZXh0QXJlYSgpOwogICAgICAgICAgZWRpdG9yLnNldEZvbnQobmV3IEZvbnQoIm1vbm9z
cGFjZWQiLCBGb250LlBMQUlOLCAxMikpOwoJCglyZXR1cm4gZWRpdG9yOwogICAgfQoKICAKICAg
IAoKIAogCgoKICAgIHByaXZhdGUgSk1lbnVCYXIgbWVudWJhciA9IGNyZWF0ZU1lbnViYXIoKTsK
CiAgICAvKioKICAgICAqIENyZWF0ZSBhIEphdmEgbWVudWJhcgogICAgICovCiAgICBwcm90ZWN0
ZWQgSk1lbnVCYXIgY3JlYXRlTWVudWJhcigpIHsKCUpNZW51QmFyIG1iID0gbmV3IEpNZW51QmFy
KCk7CglKTWVudSBtOwoJSk1lbnVJdGVtIG1pOwoJICAgIAogICAgCW0gPSBuZXcgSk1lbnUoIkZp
bGUiKTsKICAgICAgICAgICAgICAgIAoJICAgICAgICAKCSAgICAgICAgICAgIAoJCSAgICAgCSAg
ICAKCQkJICAgIG1pID0gbmV3IEpNZW51SXRlbSgiTmV3Iik7CgkJCSAgICBtaS5hZGRBY3Rpb25M
aXN0ZW5lcihuZXcgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXIoKSB7CgkJCQkgICAgcHVi
bGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKCQkJCSAgICAgICAgTmV3
RmlsZSgpOwoJCQkJICAgIH0KCQkJICAgIH0pOwoJIAkJICAgIG0uYWRkKG1pKTsKCQkgICAgCgkJ
IAoJICAgICAgICAKCSAgICAgICAgCgkgICAgICAgICAgICAKCQkgICAgIAkgICAgCgkJCSAgICBt
aSA9IG5ldyBKTWVudUl0ZW0oIk9wZW4iKTsKCQkJICAgIG1pLmFkZEFjdGlvbkxpc3RlbmVyKG5l
dyBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBh
Y3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBPcGVuRmlsZSgpOwoJ
CQkJICAgIH0KCQkJICAgIH0pOwoJIAkJICAgIG0uYWRkKG1pKTsKCQkgICAgCgkJIAoJICAgICAg
ICAKCSAgICAgICAgCgkgICAgICAgICAgICAKCQkgICAgIAkgICAgCgkJCSAgICBtaSA9IG5ldyBK
TWVudUl0ZW0oIlNhdmUiKTsKCQkJICAgIG1pLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBqYXZhLmF3
dC5ldmVudC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJm
b3JtZWQoQWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBTYXZlRmlsZSgpOwoJCQkJICAgIH0K
CQkJICAgIH0pOwoJIAkJICAgIG0uYWRkKG1pKTsKCQkgICAgCgkJIAoJICAgICAgICAKCSAgICAg
ICAgCgkgICAgICAgICAgICAgCSAgICAKCSAgICAgICAJCSAgICBtLmFkZFNlcGFyYXRvcigpOwoJ
CSAgICAKCQkgICAgCgkJIAoJICAgICAgICAKCSAgICAgICAgCgkgICAgICAgICAgICAKCQkgICAg
IAkgICAgCgkJCSAgICBtaSA9IG5ldyBKTWVudUl0ZW0oIkV4aXQiKTsKCQkJICAgIG1pLmFkZEFj
dGlvbkxpc3RlbmVyKG5ldyBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAg
ICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAg
ICBFeGl0KCk7CgkJCQkgICAgfQoJCQkgICAgfSk7CgkgCQkgICAgbS5hZGQobWkpOwoJCSAgICAK
CQkgCgkgICAgCQkJCQoJICAgIG1iLmFkZChtKTsKCSAgICAKICAgIAltID0gbmV3IEpNZW51KCJF
ZGl0Iik7CiAgICAgICAgICAgICAgICAKCSAgICAgICAgCgkgICAgICAgICAgICAKCQkgICAgIAkg
ICAgCgkJCSAgICBtaSA9IG5ldyBKTWVudUl0ZW0oIkN1dCIpOwoJCQkgICAgbWkuYWRkQWN0aW9u
TGlzdGVuZXIobmV3IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyKCkgewoJCQkJICAgIHB1
YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CgkJCQkgICAgICAgIEN1
dCgpOwoJCQkJICAgIH0KCQkJICAgIH0pOwoJIAkJICAgIG0uYWRkKG1pKTsKCQkgICAgCgkJIAoJ
ICAgICAgICAKCSAgICAgICAgCgkgICAgICAgICAgICAKCQkgICAgIAkgICAgCgkJCSAgICBtaSA9
IG5ldyBKTWVudUl0ZW0oIkNvcHkiKTsKCQkJICAgIG1pLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBq
YXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBhY3Rp
b25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBDb3B5KCk7CgkJCQkgICAg
fQoJCQkgICAgfSk7CgkgCQkgICAgbS5hZGQobWkpOwoJCSAgICAKCQkgCgkgICAgICAgIAoJICAg
ICAgICAKCSAgICAgICAgICAgIAoJCSAgICAgCSAgICAKCQkJICAgIG1pID0gbmV3IEpNZW51SXRl
bSgiUGFzdGUiKTsKCQkJICAgIG1pLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBqYXZhLmF3dC5ldmVu
dC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQo
QWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBQYXN0ZSgpOwoJCQkJICAgIH0KCQkJICAgIH0p
OwoJIAkJICAgIG0uYWRkKG1pKTsKCQkgICAgCgkJIAoJICAgIAkJCQkKCSAgICBtYi5hZGQobSk7
CgkgICAgCiAgICAJbSA9IG5ldyBKTWVudSgiSGVscCIpOwogICAgICAgICAgICAgICAgCgkgICAg
ICAgIAoJICAgICAgICAgICAgCgkJICAgICAJICAgIAoJCQkgICAgbWkgPSBuZXcgSk1lbnVJdGVt
KCJBYm91dCIpOwoJCQkgICAgbWkuYWRkQWN0aW9uTGlzdGVuZXIobmV3IGphdmEuYXd0LmV2ZW50
LkFjdGlvbkxpc3RlbmVyKCkgewoJCQkJICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChB
Y3Rpb25FdmVudCBlKSB7CgkJCQkgICAgICAgIEFib3V0KCk7CgkJCQkgICAgfQoJCQkgICAgfSk7
CgkgCQkgICAgbS5hZGQobWkpOwoJCSAgICAKCQkgCgkgICAgCQkJCQoJICAgIG1iLmFkZChtKTsK
CQoJCQkKCXJldHVybiBtYjsKICAgIH0KCgogICAgICAgIAogICAgICAgICAgICAKCSAgICAgICAK
CSAgICAgICAgCgkJICAgIAogICAgICAgICAgICAgICAKCgoKCgogICAgICAgcHJpdmF0ZSB2b2lk
IE5ld0ZpbGUoKSB7CiAgICAgICAgICAKCSAgICAgICAgRG9jdW1lbnQgb2xkRG9jID0gZWRpdG9y
LmdldERvY3VtZW50KCk7CgkgICAgICAgIGVkaXRvci5zZXREb2N1bWVudChuZXcgUGxhaW5Eb2N1
bWVudCgpKTsKCSAgICAgICAgcmV2YWxpZGF0ZSgpOwkJCiAgICAgICAgICAKCSB9CgoKCQkgICAg
CgkJCiAgICAgICAgICAgIAoJICAgICAgIAoJICAgICAgICAKCQkgICAgCiAgICAgICAgICAgICAg
IAoKCgoKCgoKCgoKICAgCiAgICAvKioKICAgICAqIFRocmVhZCB0byBsb2FkIGEgZmlsZSBpbnRv
IHRoZSB0ZXh0IHN0b3JhZ2UgbW9kZWwKICAgICAqLwogICAgY2xhc3MgRmlsZUxvYWRlciBleHRl
bmRzIFRocmVhZCB7CgoJRmlsZUxvYWRlcihGaWxlIGYsIERvY3VtZW50IGRvYykgewoJICAgIHNl
dFByaW9yaXR5KDQpOwoJICAgIHRoaXMuZiA9IGY7CgkgICAgdGhpcy5kb2MgPSBkb2M7Cgl9Cgog
ICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKCgoJICAgIHRyeSB7CgkJLy8gaW5pdGlhbGl6ZSB0
aGUgc3RhdHVzYmFyCgkJc3RhdHVzYmFyLnJlbW92ZUFsbCgpOwoJCUpQcm9ncmVzc0JhciBwcm9n
cmVzcyA9IG5ldyBKUHJvZ3Jlc3NCYXIoKTsKCQlwcm9ncmVzcy5zZXRNaW5pbXVtKDApOwoJCXBy
b2dyZXNzLnNldE1heGltdW0oKGludCkgZi5sZW5ndGgoKSk7CgkJc3RhdHVzYmFyLmFkZChwcm9n
cmVzcyk7CgkJc3RhdHVzYmFyLnJldmFsaWRhdGUoKTsKCgkJLy8gdHJ5IHRvIHN0YXJ0IHJlYWRp
bmcKCQlSZWFkZXIgaW4gPSBuZXcgRmlsZVJlYWRlcihmKTsKCQljaGFyW10gYnVmZiA9IG5ldyBj
aGFyWzQwOTZdOwoJCWludCBuY2g7CgkJd2hpbGUgKChuY2ggPSBpbi5yZWFkKGJ1ZmYsIDAsIGJ1
ZmYubGVuZ3RoKSkgIT0gLTEpIHsKCQkgICAgZG9jLmluc2VydFN0cmluZyhkb2MuZ2V0TGVuZ3Ro
KCksIG5ldyBTdHJpbmcoYnVmZiwgMCwgbmNoKSwgbnVsbCk7CgkJICAgIHByb2dyZXNzLnNldFZh
bHVlKHByb2dyZXNzLmdldFZhbHVlKCkgKyBuY2gpOwoJCX0KCgkJLy8gd2UgYXJlIGRvbmUuLi4g
Z2V0IHJpZCBvZiBwcm9ncmVzc2JhcgoJCXN0YXR1c2Jhci5yZW1vdmVBbGwoKTsKCQlzdGF0dXNi
YXIucmV2YWxpZGF0ZSgpOwoJICAgIH0KCSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewoJCVN5
c3RlbS5lcnIucHJpbnRsbihlLnRvU3RyaW5nKCkpOwoJICAgIH0KCSAgICBjYXRjaCAoQmFkTG9j
YXRpb25FeGNlcHRpb24gZSkgewoJCVN5c3RlbS5lcnIucHJpbnRsbihlLmdldE1lc3NhZ2UoKSk7
CgkgICAgfQoKCgl9CgoJRG9jdW1lbnQgZG9jOwoJRmlsZSBmOwogICAgfQoKCgogICAgIHByaXZh
dGUgRmlsZURpYWxvZyBmaWxlRGlhbG9nOwoKICAgICBwcml2YXRlIHZvaWQgT3BlbkZpbGUoKSB7
CgoJICAgIEZyYW1lIGZyYW1lID0gZ2V0RnJhbWUoKTsKCSAgICBpZiAoZmlsZURpYWxvZyA9PSBu
dWxsKSB7CgkJZmlsZURpYWxvZyA9IG5ldyBGaWxlRGlhbG9nKGZyYW1lKTsKCSAgICB9CgkgICAg
ZmlsZURpYWxvZy5zZXRNb2RlKEZpbGVEaWFsb2cuTE9BRCk7CgkgICAgZmlsZURpYWxvZy5zaG93
KCk7CgoJICAgIFN0cmluZyBmaWxlID0gZmlsZURpYWxvZy5nZXRGaWxlKCk7CgkgICAgaWYgKGZp
bGUgPT0gbnVsbCkgewoJCXJldHVybjsKCSAgICB9CgkgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGZp
bGVEaWFsb2cuZ2V0RGlyZWN0b3J5KCk7CgkgICAgRmlsZSBmID0gbmV3IEZpbGUoZGlyZWN0b3J5
LCBmaWxlKTsKCSAgICBpZiAoZi5leGlzdHMoKSkgewoJCURvY3VtZW50IG9sZERvYyA9IGVkaXRv
ci5nZXREb2N1bWVudCgpOwoJCWVkaXRvci5zZXREb2N1bWVudChuZXcgUGxhaW5Eb2N1bWVudCgp
KTsKCQlmcmFtZS5zZXRUaXRsZShmaWxlKTsKCQlUaHJlYWQgbG9hZGVyID0gbmV3IEZpbGVMb2Fk
ZXIoZiwgZWRpdG9yLmdldERvY3VtZW50KCkpOwoJCWxvYWRlci5zdGFydCgpOwoJICAgIH0KCgl9
CgogICAgLyoqCiAgICAgKiBGaW5kIHRoZSBob3N0aW5nIGZyYW1lLCBmb3IgdGhlIGZpbGUtY2hv
b3NlciBkaWFsb2cuCiAgICAgKi8KICAgIHByb3RlY3RlZCBGcmFtZSBnZXRGcmFtZSgpIHsKCWZv
ciAoQ29udGFpbmVyIHAgPSBnZXRQYXJlbnQoKTsgcCAhPSBudWxsOyBwID0gcC5nZXRQYXJlbnQo
KSkgewoJICAgIGlmIChwIGluc3RhbmNlb2YgRnJhbWUpIHsKCQlyZXR1cm4gKEZyYW1lKSBwOwoJ
ICAgIH0KCX0KCXJldHVybiBudWxsOwogICAgfQoKCgkJICAgIAoJCQogICAgICAgICAgICAKCSAg
ICAgICAKCSAgICAgICAgCgkJICAgIAogICAgICAgICAgICAgICAKCgoKICAgICBwcml2YXRlIHZv
aWQgU2F2ZUZpbGUoKSB7CgkKCSAgICBKT3B0aW9uUGFuZS5zaG93TWVzc2FnZURpYWxvZyh0aGlz
LCAiVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGxlZnQgZm9yIHJlYWRlcnMgdG8gaW1wbGVtZW50Iiwg
CiAgICAgICAgICAgICAiU2F2ZSIsIEpPcHRpb25QYW5lLklORk9STUFUSU9OX01FU1NBR0UpOwog
ICAgICAgICAgCiAgICAgICAgICAKCiAJICAgIHJldHVybjsJCQoJCiAgICAgfQoKCgoJCSAgICAK
CQkKICAgICAgICAgICAgCgkgICAgICAgCgkgICAgICAgICAJICAgIAoJCSAgICAKCQkgICAgCgkJ
CiAgICAgICAgICAgIAoJICAgICAgIAoJICAgICAgICAKCQkgICAgCiAgICAgICAgICAgICAgIAoK
CgogICAgICAgcHJpdmF0ZSB2b2lkIEV4aXQoKSB7CgkgIAoJICAgICAgU3lzdGVtLmV4aXQoMCk7
CgkgIAogIAl9CgoKCQkgICAgCgkJCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoJICAg
ICAgIAoJICAgICAgICAKCQkgICAgCiAgICAgICAgICAgICAgIAoKCgogICAgcHJpdmF0ZSB2b2lk
IEN1dCgpIHsKCWVkaXRvci5jdXQoKTsKICAgIH0KCgoKCQkgICAgCgkJCiAgICAgICAgICAgIAoJ
ICAgICAgIAoJICAgICAgICAKCQkgICAgCiAgICAgICAgICAgICAgIAoKCgogICAgIHByaXZhdGUg
dm9pZCBDb3B5KCkgewoJICAgIGVkaXRvci5jb3B5KCk7CiAgICAgIH0KCgoJCSAgICAKCQkKICAg
ICAgICAgICAgCgkgICAgICAgCgkgICAgICAgIAoJCSAgICAKICAgICAgICAgICAgICAgCgoKCiAg
ICAgICAgcHJpdmF0ZSB2b2lkIFBhc3RlKCkgewoJICAgIGVkaXRvci5wYXN0ZSgpOwoJIH0KCgoJ
CSAgICAKCQkKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgkgICAgICAgCgkgICAgICAg
IAoJCSAgICAKICAgICAgICAgICAgICAgCgoKCglwcml2YXRlIHZvaWQgQWJvdXQoKSB7CgoJICAg
ICAgIEpPcHRpb25QYW5lLnNob3dNZXNzYWdlRGlhbG9nKHRoaXMsICJUaGlzIGlzIGFuIGV4YW1w
bGUgb2YgYSBOb3RlcGFkXG4gRGV2ZWxvcGVkIGluIFhWQ0wgYW5kIEphdmEiLCAKICAgICAgICAg
ICAgICAgICAgICJBYm91dCIsIEpPcHRpb25QYW5lLklORk9STUFUSU9OX01FU1NBR0UpOwoJICAg
IAkgICAgCiAgICAgICAgICByZXR1cm47Cgl9CgoKCQkgICAgCgkJCiAgICAgICAgCiAgICAKCgoK
ICAgIAoJICAKICAgIAoKICAKICAgICAgICAgICAgICAgICAgICAgICAgICAJCgoKCiAgICBwcml2
YXRlIEpUb29sQmFyIHRvb2xiYXIgPSAoSlRvb2xCYXIpY3JlYXRlVG9vbGJhcigpOwoKICAgIC8q
KgogICAgICogQ3JlYXRlIGEgSmF2YSB0b29sYmFyLiAKICAgICAqLwogICAgcHJpdmF0ZSBDb21w
b25lbnQgY3JlYXRlVG9vbGJhcigpIHsKCSAgICBKVG9vbEJhciB0b29sYmFyID0gbmV3IEpUb29s
QmFyKCk7CgkgICAgSkJ1dHRvbiAgYnV0dG9uOyAKCSAgICAKCSAgICAKCSAgICAgICAgCgkJCSAJ
CgkJCQlidXR0b24gPSBuZXcgSkJ1dHRvbihuZXcgSW1hZ2VJY29uKCJyZXNvdXJjZXMvbmV3Lmdp
ZiIpKTsgICAgCgkJCQlidXR0b24uc2V0VG9vbFRpcFRleHQoIkNyZWF0ZSBhIG5ldyBmaWxlIik7
CiAgCQkJICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBqYXZhLmF3dC5ldmVudC5B
Y3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0
aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBOZXdGaWxlKCk7CgkJCQkgICAgfQoJCQkJfSk7CgkJ
CQl0b29sYmFyLmFkZChidXR0b24pOwkJCQkKCQkJCgkJCgkgICAgCgkgICAgCgkgICAgICAgIAoJ
CQkgCQoJCQkJYnV0dG9uID0gbmV3IEpCdXR0b24obmV3IEltYWdlSWNvbigicmVzb3VyY2VzL29w
ZW4uZ2lmIikpOyAgICAKCQkJCWJ1dHRvbi5zZXRUb29sVGlwVGV4dCgiT3BlbiBhIGZpbGUiKTsK
ICAJCQkgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobmV3IGphdmEuYXd0LmV2ZW50LkFj
dGlvbkxpc3RlbmVyKCkgewoJCQkJICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rp
b25FdmVudCBlKSB7CgkJCQkgICAgICAgIE9wZW5GaWxlKCk7CgkJCQkgICAgfQoJCQkJfSk7CgkJ
CQl0b29sYmFyLmFkZChidXR0b24pOwkJCQkKCQkJCgkJCgkgICAgCgkgICAgCgkgICAgICAgIAoJ
CQkgCQoJCQkJYnV0dG9uID0gbmV3IEpCdXR0b24obmV3IEltYWdlSWNvbigicmVzb3VyY2VzL3Nh
dmUuZ2lmIikpOyAgICAKCQkJCWJ1dHRvbi5zZXRUb29sVGlwVGV4dCgiU2F2ZSB0byBhIGZpbGUi
KTsKICAJCQkgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobmV3IGphdmEuYXd0LmV2ZW50
LkFjdGlvbkxpc3RlbmVyKCkgewoJCQkJICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChB
Y3Rpb25FdmVudCBlKSB7CgkJCQkgICAgICAgIFNhdmVGaWxlKCk7CgkJCQkgICAgfQoJCQkJfSk7
CgkJCQl0b29sYmFyLmFkZChidXR0b24pOwkJCQkKCQkJCgkJCgkgICAgCgkgICAgCgkgICAgICAg
ICAJICAgIAoJCQkgICAgdG9vbGJhci5hZGQoQm94LmNyZWF0ZUhvcml6b250YWxTdHJ1dCg1KSk7
CgkJCQoJCQkKCQkKCSAgICAKCSAgICAKCSAgICAgICAgCgkJCSAJCgkJCQlidXR0b24gPSBuZXcg
SkJ1dHRvbihuZXcgSW1hZ2VJY29uKCJyZXNvdXJjZXMvY3V0LmdpZiIpKTsgICAgCgkJCQlidXR0
b24uc2V0VG9vbFRpcFRleHQoIk1vdmUgc2VsZWN0aW9uIHRvIGNsaXBib2FyZCIpOwogIAkJCSAg
ICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlz
dGVuZXIoKSB7CgkJCQkgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50
IGUpIHsKCQkJCSAgICAgICAgQ3V0KCk7CgkJCQkgICAgfQoJCQkJfSk7CgkJCQl0b29sYmFyLmFk
ZChidXR0b24pOwkJCQkKCQkJCgkJCgkgICAgCgkgICAgCgkgICAgICAgIAoJCQkgCQoJCQkJYnV0
dG9uID0gbmV3IEpCdXR0b24obmV3IEltYWdlSWNvbigicmVzb3VyY2VzL2NvcHkuZ2lmIikpOyAg
ICAKCQkJCWJ1dHRvbi5zZXRUb29sVGlwVGV4dCgiQ29weSBzZWxlY3Rpb24gdG8gY2xpcGJvYXJk
Iik7CiAgCQkJICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBqYXZhLmF3dC5ldmVu
dC5BY3Rpb25MaXN0ZW5lcigpIHsKCQkJCSAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQo
QWN0aW9uRXZlbnQgZSkgewoJCQkJICAgICAgICBDb3B5KCk7CgkJCQkgICAgfQoJCQkJfSk7CgkJ
CQl0b29sYmFyLmFkZChidXR0b24pOwkJCQkKCQkJCgkJCgkgICAgCgkgICAgCgkgICAgICAgIAoJ
CQkgCQoJCQkJYnV0dG9uID0gbmV3IEpCdXR0b24obmV3IEltYWdlSWNvbigicmVzb3VyY2VzL3Bh
c3RlLmdpZiIpKTsgICAgCgkJCQlidXR0b24uc2V0VG9vbFRpcFRleHQoIlBhc3RlIGNsaXBib2Fy
ZCB0byBzZWxlY3Rpb24iKTsKICAJCQkgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobmV3
IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyKCkgewoJCQkJICAgIHB1YmxpYyB2b2lkIGFj
dGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CgkJCQkgICAgICAgIFBhc3RlKCk7CgkJCQkg
ICAgfQoJCQkJfSk7CgkJCQl0b29sYmFyLmFkZChidXR0b24pOwkJCQkKCQkJCgkJCgkKCgkgICAg
dG9vbGJhci5hZGQoQm94LmNyZWF0ZUhvcml6b250YWxHbHVlKCkpOwoJICAgIHJldHVybiB0b29s
YmFyOwogICAgfQoKCgogICAgICAKCgogICAgCgogIAoKCgogICAgcHJpdmF0ZSBKQ29tcG9uZW50
IHN0YXR1c2JhciA9IChKQ29tcG9uZW50KWNyZWF0ZVN0YXR1c2JhcigpOyAgIAoKICAgIC8qKgog
ICAgICogQ3JlYXRlIGEgc3RhdHVzIGJhcgogICAgICovCiAgICBwcm90ZWN0ZWQgSkNvbXBvbmVu
dCBjcmVhdGVTdGF0dXNiYXIoKSB7CgkJLy8gbmVlZCB0byBkbyBzb21ldGhpbmcgcmVhc29uYWJs
ZSBoZXJlCglTdGF0dXNCYXIgc3RhdHVzID0gbmV3IFN0YXR1c0JhcigpOwoJcmV0dXJuIHN0YXR1
czsKICAgIH0KCiAgICBjbGFzcyBTdGF0dXNCYXIgZXh0ZW5kcyBKQ29tcG9uZW50IHsKCiAgICAg
ICAgcHVibGljIFN0YXR1c0JhcigpIHsKCSAgICBzdXBlcigpOwoJCiAgCSAgICBzZXRCb3JkZXIo
Qm9yZGVyRmFjdG9yeS5jcmVhdGVFdGNoZWRCb3JkZXIoKSk7CgkgICAgc2V0TGF5b3V0KG5ldyBC
b3hMYXlvdXQodGhpcywgQm94TGF5b3V0LlhfQVhJUykpOwoJCgl9CgogICAgICAgIHB1YmxpYyB2
b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKCQoJICAgIHN1cGVyLnBhaW50KGcpOwoJCgl9CiAgICB9
CgoKCgoKfQoKCgkK

------_=_NextPart_001_01C3114B.BF14907F--


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf