From jer at printstacktrace.org Sun Apr 1 15:00:59 2012 Content-Type: multipart/mixed; boundary="===============3853795223881849040==" MIME-Version: 1.0 From: =?utf-8?q?J=C3=A9r=C3=A9mie_=3Cjer_at_printstacktrace=2Eorg=3E?= To: forge-dev at lists.jboss.org Subject: [forge-dev] Questions about a new javaee portlet plugin Date: Sun, 01 Apr 2012 21:00:52 +0200 Message-ID: --===============3853795223881849040== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Forge Team! I would like to create a plugin to manage javaee portlets. A first commit is available here http://goo.gl/OKgsG . Before going further and create a Forge Jira ticket I would appreciate your opinion. - Do you think core/javaee-api and core /javaee-impl is a right place or I need to create an other project? - The JBoss Shrinkwrap project doesn't currently include the portlet.xml description. I think it's interesting to do that. (I can create an other Jira ticket) - The quickstart option would be interesting to push the generated code in a GateIn instance (not implemented yet). - Command names and options are correct? Thanks for your comments. For now here's what you can do: $ portlet setup $ portlet add --named helloportlet --title "My forge portlet" --short-title ForgePortlet --keywords "demo,forge,portlet" $ portlet add-param --portlet helloportlet --name javax.portlet.faces.defaultViewId.view --value "/home.xhtml" $ portlet add-param --portlet helloportlet --name javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" $ portlet add-param --portlet helloportlet --name javax.portlet.faces.defaultViewId.help --value "/help.xhtml" And the result is : src/main/webapp/WEB-INF/portlet.xml ----------------------------------------------------- helloportlet javax.portlet.faces.GenericFacesPortlet text/html EDIT HELP VIEW My forge portlet ForgePortlet demo,forge,portlet javax.portlet.faces.defaultViewId.view /home.xhtml javax.portlet.faces.defaultViewId.edit /edit.xhtml javax.portlet.faces.defaultViewId.help /help.xhtml Regads, J=C3=A9r=C3=A9mie. --===============3853795223881849040== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SGkgRm9yZ2UgVGVhbSE8ZGl2Pjxicj48L2Rpdj48ZGl2Pkkgd291bGQgbGlrZSB0byBjcmVhdGUg YSBwbHVnaW4gdG8gbWFuYWdlIGphdmFlZSBwb3J0bGV0cy48L2Rpdj48ZGl2PkEgZmlyc3QgY29t bWl0IGlzIGF2YWlsYWJsZSBoZXJlwqA8YSBocmVmPSJodHRwOi8vZ29vLmdsL09LZ3NHIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cDovL2dvby5nbC9PS2dzRzwvYT7CoC7CoDwvZGl2PjxkaXY+PGJyPgo8 L2Rpdj48ZGl2PkJlZm9yZSBnb2luZyBmdXJ0aGVyIGFuZCBjcmVhdGUgYSBGb3JnZSBKaXJhIHRp Y2tldCDCoEkgd291bGQgYXBwcmVjaWF0ZSB5b3VyIG9waW5pb24uPC9kaXY+PGRpdj7CoC0gRG8g eW91IHRoaW5rIGNvcmUvamF2YWVlLWFwaSBhbmQgY29yZcKgL2phdmFlZS1pbXBswqDCoGlzIGEg cmlnaHTCoHBsYWNlIG9yIEkgbmVlZCB0byBjcmVhdGUgYW4gb3RoZXIgcHJvamVjdD88L2Rpdj4K PGRpdj7CoC0gVGhlIEpCb3NzIFNocmlua3dyYXAgcHJvamVjdMKgZG9lc24mIzM5O3QgY3VycmVu dGx5IGluY2x1ZGUgdGhlIHBvcnRsZXQueG1sIGRlc2NyaXB0aW9uLiBJIHRoaW5rIGl0JiMzOTtz IGludGVyZXN0aW5nIHRvIGRvIHRoYXQuIChJIGNhbiBjcmVhdGUgYW4gb3RoZXIgSmlyYSB0aWNr ZXQpPC9kaXY+PGRpdj7CoC0gVGhlIHF1aWNrc3RhcnQgb3B0aW9uIMKgd291bGQgYmUgaW50ZXJl c3RpbmcgdG8gcHVzaCB0aGUgZ2VuZXJhdGVkIGNvZGUgaW4gYSBHYXRlSW4gaW5zdGFuY2UgKG5v dCBpbXBsZW1lbnRlZCB5ZXQpLjwvZGl2Pgo8ZGl2PsKgLcKgQ29tbWFuZCBuYW1lcyBhbmQgb3B0 aW9ucyBhcmUgY29ycmVjdD88L2Rpdj48ZGl2PlRoYW5rcyBmb3IgeW91ciBjb21tZW50cy48L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PkZvciBub3cgaGVyZSYjMzk7cyB3aGF0IHlvdSBjYW4gZG86 wqA8L2Rpdj48ZGl2PsKgJCBwb3J0bGV0IHNldHVwPC9kaXY+PGRpdj7CoCTCoHBvcnRsZXQgYWRk IC0tbmFtZWQgaGVsbG9wb3J0bGV0IC0tdGl0bGUgJnF1b3Q7TXkgZm9yZ2UgcG9ydGxldCZxdW90 OyAtLXNob3J0LXRpdGxlIEZvcmdlUG9ydGxldCAtLWtleXdvcmRzICZxdW90O2RlbW8sZm9yZ2Us cG9ydGxldCZxdW90OzwvZGl2Pgo8ZGl2PsKgJCBwb3J0bGV0IGFkZC1wYXJhbSAtLXBvcnRsZXQg aGVsbG9wb3J0bGV0IC0tbmFtZSBqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQudmll dyAtLXZhbHVlICZxdW90Oy9ob21lLnhodG1sJnF1b3Q7PC9kaXY+PGRpdj7CoCQgcG9ydGxldCBh ZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNl cy5kZWZhdWx0Vmlld0lkLmVkaXQgLS12YWx1ZSAmcXVvdDsvZWRpdC54aHRtbCZxdW90OzwvZGl2 Pgo8ZGl2PsKgJCBwb3J0bGV0IGFkZC1wYXJhbSAtLXBvcnRsZXQgaGVsbG9wb3J0bGV0IC0tbmFt ZSBqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQuaGVscCAtLXZhbHVlICZxdW90Oy9o ZWxwLnhodG1sJnF1b3Q7PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbmQgdGhlIHJlc3VsdCBp cyA6CjwvZGl2PjxkaXY+c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvcG9ydGxldC54bWw8L2Rpdj48 ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t PC9kaXY+PGRpdj48ZGl2PjxkaXY+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVvdDsgZW5j b2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDsgc3RhbmRhbG9uZT0mcXVvdDtubyZxdW90Oz8mZ3Q7PC9k aXY+CjxkaXY+Jmx0O3BvcnRsZXQtYXBwIHhtbG5zPSZxdW90OzxhIGhyZWY9Imh0dHA6Ly9qYXZh LnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMl8wLnhzZCI+aHR0cDovL2phdmEu c3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNkPC9hPiZxdW90OyB4bWxu czp4c2k9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5z dGFuY2UiPmh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlPC9hPiZxdW90 OyB2ZXJzaW9uPSZxdW90OzIuMCZxdW90OyB4c2k6c2NoZW1hTG9jYXRpb249JnF1b3Q7PGEgaHJl Zj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNk Ij5odHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wb3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2Q8 L2E+JnF1b3Q7Jmd0OzwvZGl2Pgo8ZGl2PsKgICZsdDtwb3J0bGV0Jmd0OzwvZGl2PjxkaXY+wqAg wqAgJmx0O3BvcnRsZXQtbmFtZSZndDtoZWxsb3BvcnRsZXQmbHQ7L3BvcnRsZXQtbmFtZSZndDs8 L2Rpdj48ZGl2PsKgIMKgICZsdDtwb3J0bGV0LWNsYXNzJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMu R2VuZXJpY0ZhY2VzUG9ydGxldCZsdDsvcG9ydGxldC1jbGFzcyZndDs8L2Rpdj48ZGl2PsKgIMKg ICZsdDtzdXBwb3J0cyZndDs8L2Rpdj4KPGRpdj7CoCDCoCDCoCAmbHQ7bWltZS10eXBlJmd0O3Rl eHQvaHRtbCZsdDsvbWltZS10eXBlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3BvcnRsZXQt bW9kZSZndDtFRElUJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7 cG9ydGxldC1tb2RlJmd0O0hFTFAmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj48ZGl2PsKgIMKg IMKgICZsdDtwb3J0bGV0LW1vZGUmZ3Q7VklFVyZsdDsvcG9ydGxldC1tb2RlJmd0OzwvZGl2Pgo8 ZGl2PsKgIMKgICZsdDsvc3VwcG9ydHMmZ3Q7PC9kaXY+PGRpdj7CoCDCoCAmbHQ7cG9ydGxldC1p bmZvJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3RpdGxlJmd0O015IGZvcmdlIHBvcnRsZXQm bHQ7L3RpdGxlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3Nob3J0LXRpdGxlJmd0O0Zvcmdl UG9ydGxldCZsdDsvc2hvcnQtdGl0bGUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7a2V5d29y ZHMmZ3Q7ZGVtbyxmb3JnZSxwb3J0bGV0Jmx0Oy9rZXl3b3JkcyZndDs8L2Rpdj4KPGRpdj7CoCDC oCAmbHQ7L3BvcnRsZXQtaW5mbyZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDtpbml0LXBhcmFtJmd0 OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZh dWx0Vmlld0lkLnZpZXcmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUm Z3Q7L2hvbWUueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBh cmFtJmd0OzwvZGl2Pgo8ZGl2PsKgIMKgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAg wqAgwqAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmVkaXQm bHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUmZ3Q7L2VkaXQueGh0bWwm bHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBhcmFtJmd0OzwvZGl2Pjxk aXY+wqAgwqAgJmx0O2luaXQtcGFyYW0mZ3Q7PC9kaXY+CjxkaXY+wqAgwqAgwqAgJmx0O25hbWUm Z3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmhlbHAmbHQ7L25hbWUmZ3Q7PC9k aXY+PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUmZ3Q7L2hlbHAueGh0bWwmbHQ7L3ZhbHVlJmd0Ozwv ZGl2PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAgJmx0Oy9wb3J0 bGV0Jmd0OzwvZGl2PjxkaXY+Jmx0Oy9wb3J0bGV0LWFwcCZndDs8L2Rpdj4KPC9kaXY+PGRpdj48 YnI+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdhZHMsPC9kaXY+PGRpdj5Kw6ly w6ltaWUuPC9kaXY+Cg== --===============3853795223881849040==-- From ken at kenfinnigan.me Mon Apr 2 09:35:23 2012 Content-Type: multipart/mixed; boundary="===============7371828429607134455==" MIME-Version: 1.0 From: Ken Finnigan To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Mon, 02 Apr 2012 09:35:21 -0400 Message-ID: In-Reply-To: CAGM=3hsgdZydjf4N+C-ouLiY4Li3MsvBzz1KE4myXk=A9Xe1cQ@mail.gmail.com --===============7371828429607134455== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi J=C3=A9r=C3=A9mie, Thanks for putting an initial portal plugin together. It was something on my list for the months ahead, but you beat me to it! ;-) I've responded in line to your questions. Regards Ken On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: > Hi Forge Team! > > I would like to create a plugin to manage javaee portlets. > A first commit is available here http://goo.gl/OKgsG . > > Before going further and create a Forge Jira ticket I would appreciate > your opinion. > - Do you think core/javaee-api and core /javaee-impl is a right place or > I need to create an other project? > I think this is the correct place, though Lincoln would have the final say on that ;-) > - The JBoss Shrinkwrap project doesn't currently include the portlet.xml > description. I think it's interesting to do that. (I can create an other > Jira ticket) > By all means go ahead and create the jira and do the work. It would be quite straight forward to complete. I myself did the JSF ones last week, and was planning on getting to portal descriptors over the coming weeks. It's just a case of adding the necessary xsd files, making sure the generation process worked, and writing some tests to verify it. If you have any questions about it drop by #jbosstesting on irc and speak with Andrew (ALR) who leads the project. > - The quickstart option would be interesting to push the generated code > in a GateIn instance (not implemented yet). > You could certainly do a deploy of the portlet to GateIn, or any other portal, but I think it makes sense for that to be a separate concern from creating a portlet and it's descriptors. That is how a lot of the other plugins work, and also because the deployment would be specific to GateIn, and it would be messy to have a plugin that deals with descriptor generation and deploying to different portal containers. > - Command names and options are correct? > Thanks for your comments. > > For now here's what you can do: > $ portlet setup > $ portlet add --named helloportlet --title "My forge portlet" > --short-title ForgePortlet --keywords "demo,forge,portlet" > Might make it clearer for command to be called "new-portlet" instead of "add" > $ portlet add-param --portlet helloportlet --name > javax.portlet.faces.defaultViewId.view --value "/home.xhtml" > $ portlet add-param --portlet helloportlet --name > javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" > $ portlet add-param --portlet helloportlet --name > javax.portlet.faces.defaultViewId.help --value "/help.xhtml" > Could be nice to have the "new-portlet" command automatically create these parameters with the default values you specify above, as without them a portlet won't deploy successfully. Just as you have with the default portlet modes that are defined. It would also be nice to have aliased add-param versions for specifically adding a view, edit and help viewId. It's pretty onerous to force someone to remember the exact syntax of javax.portlet.faces.defaultViewId.* every time they want to add or modify what viewId each of those portlet modes points at. So you could have something like: $ portlet set-view-id --portlet helloportlet --view "/home.html" $ portlet set-edit-id --portlet helloportlet --view "/edit.html" $ portlet set-help-id --portlet helloportlet --view "/help.html" and then internally it actually calls add-param with the addition of the appropriate param name. > And the result is : > src/main/webapp/WEB-INF/portlet.xml > ----------------------------------------------------- > > xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" > xsi:schemaLocation=3D"http://java.sun.com/xml/ns/portlet/portlet-app_2_0.= xsd > "> > > helloportlet > javax.portlet.faces.GenericFacesPortlet > > text/html > EDIT > HELP > VIEW > > > My forge portlet > ForgePortlet > demo,forge,portlet > > > javax.portlet.faces.defaultViewId.view > /home.xhtml > > > javax.portlet.faces.defaultViewId.edit > /edit.xhtml > > > javax.portlet.faces.defaultViewId.help > /help.xhtml > > > > > > Regads, > J=C3=A9r=C3=A9mie. > > _______________________________________________ > forge-dev mailing list > forge-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/forge-dev > > --===============7371828429607134455== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SGmgPHNwYW4gc3R5bGU+Suly6W1pZSw8L3NwYW4+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIg ZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPjxicj48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xv cj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPlRoYW5rcyBmb3IgcHV0dGluZyBh biBpbml0aWFsIHBvcnRhbCBwbHVnaW4gdG9nZXRoZXIuIKBJdCB3YXMgc29tZXRoaW5nIG9uIG15 IGxpc3QgZm9yIHRoZSBtb250aHMgYWhlYWQsIGJ1dCB5b3UgYmVhdCBtZSB0byBpdCEgOy0pPC9m b250PjwvZGl2Pgo8ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1z ZXJpZiI+PGJyPjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJh cmlhbCwgc2Fucy1zZXJpZiI+SSYjMzk7dmUgcmVzcG9uZGVkIGluIGxpbmUgdG8geW91ciBxdWVz dGlvbnMuPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFs LCBzYW5zLXNlcmlmIj48YnI+CjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIy IiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+UmVnYXJkczwvZm9udD48L2Rpdj48ZGl2Pjxmb250 IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+S2VuPGJyPjwvZm9udD48 YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFN1biwgQXByIDEsIDIwMTIgYXQgMzowMCBQ TSwgSuly6W1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpqZXJAcHJpbnRz dGFja3RyYWNlLm9yZyI+amVyQHByaW50c3RhY2t0cmFjZS5vcmc8L2E+Jmd0Ozwvc3Bhbj4gd3Jv dGU6PGJyPgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAw IDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij5IaSBG b3JnZSBUZWFtITxkaXY+PGJyPjwvZGl2PjxkaXY+SSB3b3VsZCBsaWtlIHRvIGNyZWF0ZSBhIHBs dWdpbiB0byBtYW5hZ2UgamF2YWVlIHBvcnRsZXRzLjwvZGl2PjxkaXY+QSBmaXJzdCBjb21taXQg aXMgYXZhaWxhYmxlIGhlcmWgPGEgaHJlZj0iaHR0cDovL2dvby5nbC9PS2dzRyIgdGFyZ2V0PSJf YmxhbmsiPmh0dHA6Ly9nb28uZ2wvT0tnc0c8L2E+oC6gPC9kaXY+CjxkaXY+PGJyPgo8L2Rpdj48 ZGl2PkJlZm9yZSBnb2luZyBmdXJ0aGVyIGFuZCBjcmVhdGUgYSBGb3JnZSBKaXJhIHRpY2tldCCg SSB3b3VsZCBhcHByZWNpYXRlIHlvdXIgb3Bpbmlvbi48L2Rpdj48ZGl2PqAtIERvIHlvdSB0aGlu ayBjb3JlL2phdmFlZS1hcGkgYW5kIGNvcmWgL2phdmFlZS1pbXBsoKBpcyBhIHJpZ2h0oHBsYWNl IG9yIEkgbmVlZCB0byBjcmVhdGUgYW4gb3RoZXIgcHJvamVjdD88L2Rpdj4KPC9ibG9ja3F1b3Rl PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSB0aGluayB0aGlzIGlzIHRoZSBjb3JyZWN0IHBsYWNlLCB0 aG91Z2ggTGluY29sbiB3b3VsZCBoYXZlIHRoZSBmaW5hbCBzYXkgb24gdGhhdCA7LSk8L2Rpdj48 ZGl2PqA8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46 MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4K CjxkaXY+oC0gVGhlIEpCb3NzIFNocmlua3dyYXAgcHJvamVjdKBkb2VzbiYjMzk7dCBjdXJyZW50 bHkgaW5jbHVkZSB0aGUgcG9ydGxldC54bWwgZGVzY3JpcHRpb24uIEkgdGhpbmsgaXQmIzM5O3Mg aW50ZXJlc3RpbmcgdG8gZG8gdGhhdC4gKEkgY2FuIGNyZWF0ZSBhbiBvdGhlciBKaXJhIHRpY2tl dCk8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5CeSBhbGwgbWVhbnMgZ28g YWhlYWQgYW5kIGNyZWF0ZSB0aGUgamlyYSBhbmQgZG8gdGhlIHdvcmsuIKBJdCB3b3VsZCBiZSBx dWl0ZSBzdHJhaWdodCBmb3J3YXJkIHRvIGNvbXBsZXRlLiCgSSBteXNlbGYgZGlkIHRoZSBKU0Yg b25lcyBsYXN0IHdlZWssIGFuZCB3YXMgcGxhbm5pbmcgb24gZ2V0dGluZyB0byBwb3J0YWwgZGVz Y3JpcHRvcnMgb3ZlciB0aGUgY29taW5nIHdlZWtzLiCgSXQmIzM5O3MganVzdCBhIGNhc2Ugb2Yg YWRkaW5nIHRoZSBuZWNlc3NhcnkgeHNkIGZpbGVzLCBtYWtpbmcgc3VyZSB0aGUgZ2VuZXJhdGlv biBwcm9jZXNzIHdvcmtlZCwgYW5kIHdyaXRpbmcgc29tZSB0ZXN0cyB0byB2ZXJpZnkgaXQuIKBJ ZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIGFib3V0IGl0IGRyb3AgYnkgI2pib3NzdGVzdGluZyBv biBpcmMgYW5kIHNwZWFrIHdpdGggQW5kcmV3IChBTFIpIHdobyBsZWFkcyB0aGUgcHJvamVjdC48 L2Rpdj4KPGRpdj6gPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0 OjFleCI+PGRpdj6gLSBUaGUgcXVpY2tzdGFydCBvcHRpb24goHdvdWxkIGJlIGludGVyZXN0aW5n IHRvIHB1c2ggdGhlIGdlbmVyYXRlZCBjb2RlIGluIGEgR2F0ZUluIGluc3RhbmNlIChub3QgaW1w bGVtZW50ZWQgeWV0KS48L2Rpdj4KPC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+WW91 IGNvdWxkIGNlcnRhaW5seSBkbyBhIGRlcGxveSBvZiB0aGUgcG9ydGxldCB0byBHYXRlSW4sIG9y IGFueSBvdGhlciBwb3J0YWwsIGJ1dCBJIHRoaW5rIGl0IG1ha2VzIHNlbnNlIGZvciB0aGF0IHRv IGJlIGEgc2VwYXJhdGUgY29uY2VybiBmcm9tIGNyZWF0aW5nIGEgcG9ydGxldCBhbmQgaXQmIzM5 O3MgZGVzY3JpcHRvcnMuIKBUaGF0IGlzIGhvdyBhIGxvdCBvZiB0aGUgb3RoZXIgcGx1Z2lucyB3 b3JrLCBhbmQgYWxzbyBiZWNhdXNlIHRoZSBkZXBsb3ltZW50IHdvdWxkIGJlIHNwZWNpZmljIHRv IEdhdGVJbiwgYW5kIGl0IHdvdWxkIGJlIG1lc3N5IHRvIGhhdmUgYSBwbHVnaW4gdGhhdCBkZWFs cyB3aXRoIGRlc2NyaXB0b3IgZ2VuZXJhdGlvbiBhbmQgZGVwbG95aW5nIHRvIGRpZmZlcmVudCBw b3J0YWwgY29udGFpbmVycy48L2Rpdj4KPGRpdj6gPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9Imdt YWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mg c29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjxkaXY+oC2gQ29tbWFuZCBuYW1lcyBhbmQgb3B0aW9u cyBhcmUgY29ycmVjdD88L2Rpdj48ZGl2PlRoYW5rcyBmb3IgeW91ciBjb21tZW50cy48L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PkZvciBub3cgaGVyZSYjMzk7cyB3aGF0IHlvdSBjYW4gZG86oDwv ZGl2PjxkaXY+oCQgcG9ydGxldCBzZXR1cDwvZGl2PjwvYmxvY2txdW90ZT48YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj6gJKBwb3J0bGV0IGFkZCAtLW5h bWVkIGhlbGxvcG9ydGxldCAtLXRpdGxlICZxdW90O015IGZvcmdlIHBvcnRsZXQmcXVvdDsgLS1z aG9ydC10aXRsZSBGb3JnZVBvcnRsZXQgLS1rZXl3b3JkcyAmcXVvdDtkZW1vLGZvcmdlLHBvcnRs ZXQmcXVvdDs8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5NaWdodCBtYWtl IGl0IGNsZWFyZXIgZm9yIGNvbW1hbmQgdG8gYmUgY2FsbGVkICZxdW90O25ldy1wb3J0bGV0JnF1 b3Q7IGluc3RlYWQgb2YgJnF1b3Q7YWRkJnF1b3Q7PC9kaXY+CjxkaXY+oDwvZGl2PjxibG9ja3F1 b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1s ZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2PqAkIHBvcnRsZXQgYWRk LXBhcmFtIC0tcG9ydGxldCBoZWxsb3BvcnRsZXQgLS1uYW1lIGphdmF4LnBvcnRsZXQuZmFjZXMu ZGVmYXVsdFZpZXdJZC52aWV3IC0tdmFsdWUgJnF1b3Q7L2hvbWUueGh0bWwmcXVvdDs8L2Rpdj48 ZGl2PqAkIHBvcnRsZXQgYWRkLXBhcmFtIC0tcG9ydGxldCBoZWxsb3BvcnRsZXQgLS1uYW1lIGph dmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5lZGl0IC0tdmFsdWUgJnF1b3Q7L2VkaXQu eGh0bWwmcXVvdDs8L2Rpdj4KCjxkaXY+oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0bGV0IGhl bGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmhlbHAg LS12YWx1ZSAmcXVvdDsvaGVscC54aHRtbCZxdW90OzwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxi cj48L2Rpdj48ZGl2PkNvdWxkIGJlIG5pY2UgdG8gaGF2ZSB0aGUgJnF1b3Q7bmV3LXBvcnRsZXQm cXVvdDsgY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGVzZSBwYXJhbWV0ZXJzIHdpdGgg dGhlIGRlZmF1bHQgdmFsdWVzIHlvdSBzcGVjaWZ5IGFib3ZlLCBhcyB3aXRob3V0IHRoZW0gYSBw b3J0bGV0IHdvbiYjMzk7dCBkZXBsb3kgc3VjY2Vzc2Z1bGx5LiCgSnVzdCBhcyB5b3UgaGF2ZSB3 aXRoIHRoZSBkZWZhdWx0IHBvcnRsZXQgbW9kZXMgdGhhdCBhcmUgZGVmaW5lZC48L2Rpdj4KPGRp dj6gPC9kaXY+PGRpdj5JdCB3b3VsZCBhbHNvIGJlIG5pY2UgdG8gaGF2ZSBhbGlhc2VkIGFkZC1w YXJhbSB2ZXJzaW9ucyBmb3Igc3BlY2lmaWNhbGx5IGFkZGluZyBhIHZpZXcsIGVkaXQgYW5kIGhl bHAgdmlld0lkLiCgSXQmIzM5O3MgcHJldHR5IG9uZXJvdXMgdG8gZm9yY2Ugc29tZW9uZSB0byBy ZW1lbWJlciB0aGUgZXhhY3Qgc3ludGF4IG9mIGphdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZp ZXdJZC4qIGV2ZXJ5IHRpbWUgdGhleSB3YW50IHRvIGFkZCBvciBtb2RpZnkgd2hhdCB2aWV3SWQg ZWFjaCBvZiB0aG9zZSBwb3J0bGV0IG1vZGVzIHBvaW50cyBhdC48L2Rpdj4KPGRpdj48YnI+PC9k aXY+PGRpdj5TbyB5b3UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZTo8L2Rpdj48ZGl2PiQgcG9y dGxldCBzZXQtdmlldy1pZCAtLXBvcnRsZXQgaGVsbG9wb3J0bGV0IC0tdmlldyAmcXVvdDsvaG9t ZS5odG1sJnF1b3Q7PC9kaXY+PGRpdj48ZGl2PiQgcG9ydGxldCBzZXQtZWRpdC1pZCAtLXBvcnRs ZXQgaGVsbG9wb3J0bGV0IC0tdmlldyAmcXVvdDsvZWRpdC5odG1sJnF1b3Q7PC9kaXY+CjwvZGl2 PjxkaXY+PGRpdj4kIHBvcnRsZXQgc2V0LWhlbHAtaWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAt LXZpZXcgJnF1b3Q7L2hlbHAuaHRtbCZxdW90OzwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk aXY+YW5kIHRoZW4gaW50ZXJuYWxseSBpdCBhY3R1YWxseSBjYWxscyBhZGQtcGFyYW0gd2l0aCB0 aGUgYWRkaXRpb24gb2YgdGhlIGFwcHJvcHJpYXRlIHBhcmFtIG5hbWUuPC9kaXY+CjxkaXY+PGJy PjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAg MCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxkaXY+ PGJyPjwvZGl2PjxkaXY+QW5kIHRoZSByZXN1bHQgaXMgOgo8L2Rpdj48ZGl2PnNyYy9tYWluL3dl YmFwcC9XRUItSU5GL3BvcnRsZXQueG1sPC9kaXY+PGRpdj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvZGl2PjxkaXY+PGRpdj48ZGl2PiZsdDs/ eG1sIHZlcnNpb249JnF1b3Q7MS4wJnF1b3Q7IGVuY29kaW5nPSZxdW90O1VURi04JnF1b3Q7IHN0 YW5kYWxvbmU9JnF1b3Q7bm8mcXVvdDs/Jmd0OzwvZGl2PgoKPGRpdj4mbHQ7cG9ydGxldC1hcHAg eG1sbnM9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9w b3J0bGV0LWFwcF8yXzAueHNkIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS94 bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNkPC9hPiZxdW90OyB4bWxuczp4c2k9JnF1 b3Q7PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHRh cmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZTwv YT4mcXVvdDsgdmVyc2lvbj0mcXVvdDsyLjAmcXVvdDsgeHNpOnNjaGVtYUxvY2F0aW9uPSZxdW90 OzxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBf Ml8wLnhzZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRs ZXQvcG9ydGxldC1hcHBfMl8wLnhzZDwvYT4mcXVvdDsmZ3Q7PC9kaXY+Cgo8ZGl2PqAgJmx0O3Bv cnRsZXQmZ3Q7PC9kaXY+PGRpdj6gIKAgJmx0O3BvcnRsZXQtbmFtZSZndDtoZWxsb3BvcnRsZXQm bHQ7L3BvcnRsZXQtbmFtZSZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7cG9ydGxldC1jbGFzcyZndDtq YXZheC5wb3J0bGV0LmZhY2VzLkdlbmVyaWNGYWNlc1BvcnRsZXQmbHQ7L3BvcnRsZXQtY2xhc3Mm Z3Q7PC9kaXY+PGRpdj6gIKAgJmx0O3N1cHBvcnRzJmd0OzwvZGl2PgoKPGRpdj6gIKAgoCAmbHQ7 bWltZS10eXBlJmd0O3RleHQvaHRtbCZsdDsvbWltZS10eXBlJmd0OzwvZGl2PjxkaXY+oCCgIKAg Jmx0O3BvcnRsZXQtbW9kZSZndDtFRElUJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj6g IKAgoCAmbHQ7cG9ydGxldC1tb2RlJmd0O0hFTFAmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj48 ZGl2PqAgoCCgICZsdDtwb3J0bGV0LW1vZGUmZ3Q7VklFVyZsdDsvcG9ydGxldC1tb2RlJmd0Ozwv ZGl2PgoKPGRpdj6gIKAgJmx0Oy9zdXBwb3J0cyZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7cG9ydGxl dC1pbmZvJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O3RpdGxlJmd0O015IGZvcmdlIHBvcnRsZXQm bHQ7L3RpdGxlJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O3Nob3J0LXRpdGxlJmd0O0ZvcmdlUG9y dGxldCZsdDsvc2hvcnQtdGl0bGUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7a2V5d29yZHMmZ3Q7 ZGVtbyxmb3JnZSxwb3J0bGV0Jmx0Oy9rZXl3b3JkcyZndDs8L2Rpdj4KCjxkaXY+oCCgICZsdDsv cG9ydGxldC1pbmZvJmd0OzwvZGl2PjxkaXY+oCCgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2Pjxk aXY+oCCgIKAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLnZp ZXcmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7dmFsdWUmZ3Q7L2hvbWUueGh0bWwm bHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+oCCgICZsdDsvaW5pdC1wYXJhbSZndDs8L2Rpdj4KCjxk aXY+oCCgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O25hbWUmZ3Q7amF2 YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmVkaXQmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRp dj6gIKAgoCAmbHQ7dmFsdWUmZ3Q7L2VkaXQueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+ oCCgICZsdDsvaW5pdC1wYXJhbSZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7aW5pdC1wYXJhbSZndDs8 L2Rpdj4KCjxkaXY+oCCgIKAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0 Vmlld0lkLmhlbHAmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7dmFsdWUmZ3Q7L2hl bHAueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+oCCgICZsdDsvaW5pdC1wYXJhbSZndDs8 L2Rpdj48ZGl2PqAgJmx0Oy9wb3J0bGV0Jmd0OzwvZGl2PjxkaXY+Jmx0Oy9wb3J0bGV0LWFwcCZn dDs8L2Rpdj4KCjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ UmVnYWRzLDwvZGl2PjxkaXY+Suly6W1pZS48L2Rpdj4KPGJyPl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpmb3JnZS1kZXYgbWFpbGluZyBsaXN0PGJy Pgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZyI+Zm9yZ2UtZGV2QGxp c3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21h aWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5q Ym9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1 b3RlPjwvZGl2Pjxicj48L2Rpdj4K --===============7371828429607134455==-- From lincolnbaxter at gmail.com Mon Apr 2 15:46:11 2012 Content-Type: multipart/mixed; boundary="===============6177716218885527745==" MIME-Version: 1.0 From: Lincoln Baxter, III To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Mon, 02 Apr 2012 15:46:09 -0400 Message-ID: In-Reply-To: CAKeeVe5f-qszQM4mjjE7vjH_umO8MQdH4D_BfpLeb2CdAFJq1g@mail.gmail.com --===============6177716218885527745== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I think this should probably be a standalone plugin for now, we can move it into the core later as it matures! Go ahead and open a ticket in FORGEPLUGINS if you want one to track this. Hopefully we will have our plugin site up and running soon so you won't need to create JIRAs, you'll just create an account and get writing! Looking forward to seeing what you come up with! ~Lincoln On Mon, Apr 2, 2012 at 9:35 AM, Ken Finnigan wrote: > Hi J=C3=A9r=C3=A9mie, > > Thanks for putting an initial portal plugin together. It was something on > my list for the months ahead, but you beat me to it! ;-) > > I've responded in line to your questions. > > Regards > Ken > > On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: > >> Hi Forge Team! >> >> I would like to create a plugin to manage javaee portlets. >> A first commit is available here http://goo.gl/OKgsG . >> >> Before going further and create a Forge Jira ticket I would appreciate >> your opinion. >> - Do you think core/javaee-api and core /javaee-impl is a right place >> or I need to create an other project? >> > > I think this is the correct place, though Lincoln would have the final say > on that ;-) > > >> - The JBoss Shrinkwrap project doesn't currently include the portlet.xml >> description. I think it's interesting to do that. (I can create an other >> Jira ticket) >> > > By all means go ahead and create the jira and do the work. It would be > quite straight forward to complete. I myself did the JSF ones last week, > and was planning on getting to portal descriptors over the coming weeks. > It's just a case of adding the necessary xsd files, making sure the > generation process worked, and writing some tests to verify it. If you > have any questions about it drop by #jbosstesting on irc and speak with > Andrew (ALR) who leads the project. > > >> - The quickstart option would be interesting to push the generated code >> in a GateIn instance (not implemented yet). >> > > You could certainly do a deploy of the portlet to GateIn, or any other > portal, but I think it makes sense for that to be a separate concern from > creating a portlet and it's descriptors. That is how a lot of the other > plugins work, and also because the deployment would be specific to GateIn, > and it would be messy to have a plugin that deals with descriptor > generation and deploying to different portal containers. > > >> - Command names and options are correct? >> Thanks for your comments. >> >> For now here's what you can do: >> $ portlet setup >> > $ portlet add --named helloportlet --title "My forge portlet" >> --short-title ForgePortlet --keywords "demo,forge,portlet" >> > > Might make it clearer for command to be called "new-portlet" instead of > "add" > > >> $ portlet add-param --portlet helloportlet --name >> javax.portlet.faces.defaultViewId.view --value "/home.xhtml" >> $ portlet add-param --portlet helloportlet --name >> javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" >> $ portlet add-param --portlet helloportlet --name >> javax.portlet.faces.defaultViewId.help --value "/help.xhtml" >> > > Could be nice to have the "new-portlet" command automatically create these > parameters with the default values you specify above, as without them a > portlet won't deploy successfully. Just as you have with the default > portlet modes that are defined. > > It would also be nice to have aliased add-param versions for specifically > adding a view, edit and help viewId. It's pretty onerous to force someone > to remember the exact syntax of javax.portlet.faces.defaultViewId.* every > time they want to add or modify what viewId each of those portlet modes > points at. > > So you could have something like: > $ portlet set-view-id --portlet helloportlet --view "/home.html" > $ portlet set-edit-id --portlet helloportlet --view "/edit.html" > $ portlet set-help-id --portlet helloportlet --view "/help.html" > > and then internally it actually calls add-param with the addition of the > appropriate param name. > > >> And the result is : >> src/main/webapp/WEB-INF/portlet.xml >> ----------------------------------------------------- >> >> > http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi=3D" >> http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" >> xsi:schemaLocation=3D" >> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> >> >> helloportlet >> javax.portlet.faces.GenericFacesPortlet >> >> text/html >> EDIT >> HELP >> VIEW >> >> >> My forge portlet >> ForgePortlet >> demo,forge,portlet >> >> >> javax.portlet.faces.defaultViewId.view >> /home.xhtml >> >> >> javax.portlet.faces.defaultViewId.edit >> /edit.xhtml >> >> >> javax.portlet.faces.defaultViewId.help >> /help.xhtml >> >> >> >> >> >> Regads, >> J=C3=A9r=C3=A9mie. >> >> _______________________________________________ >> forge-dev mailing list >> forge-dev(a)lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/forge-dev >> >> > > _______________________________________________ > forge-dev mailing list > forge-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/forge-dev > > -- = Lincoln Baxter, III http://ocpsoft.org "Simpler is better." --===============6177716218885527745== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SSB0aGluayB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBhIHN0YW5kYWxvbmUgcGx1Z2luIGZvciBu b3csIHdlIGNhbiBtb3ZlIGl0IGludG8gdGhlIGNvcmUgbGF0ZXIgYXMgaXQgbWF0dXJlcyE8YnI+ PGJyPkdvIGFoZWFkIGFuZCBvcGVuIGEgdGlja2V0IGluIEZPUkdFUExVR0lOUyBpZiB5b3Ugd2Fu dCBvbmUgdG8gdHJhY2sgdGhpcy4gSG9wZWZ1bGx5IHdlIHdpbGwgaGF2ZSBvdXIgcGx1Z2luIHNp dGUgdXAgYW5kIHJ1bm5pbmcgc29vbiBzbyB5b3Ugd29uJiMzOTt0IG5lZWQgdG8gY3JlYXRlIEpJ UkFzLCB5b3UmIzM5O2xsIGp1c3QgY3JlYXRlIGFuIGFjY291bnQgYW5kIGdldCB3cml0aW5nITxi cj4KPGJyPkxvb2tpbmcgZm9yd2FyZCB0byBzZWVpbmcgd2hhdCB5b3UgY29tZSB1cCB3aXRoITxi cj5+TGluY29sbjxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIE1vbiwgQXByIDIs IDIwMTIgYXQgOTozNSBBTSwgS2VuIEZpbm5pZ2FuIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJl Zj0ibWFpbHRvOmtlbkBrZW5maW5uaWdhbi5tZSI+a2VuQGtlbmZpbm5pZ2FuLm1lPC9hPiZndDs8 L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0 OjFleCI+SGmgPHNwYW4+Suly6W1pZSw8L3NwYW4+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIg ZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPjxicj48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xv cj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPlRoYW5rcyBmb3IgcHV0dGluZyBh biBpbml0aWFsIHBvcnRhbCBwbHVnaW4gdG9nZXRoZXIuIKBJdCB3YXMgc29tZXRoaW5nIG9uIG15 IGxpc3QgZm9yIHRoZSBtb250aHMgYWhlYWQsIGJ1dCB5b3UgYmVhdCBtZSB0byBpdCEgOy0pPC9m b250PjwvZGl2PgoKPGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMt c2VyaWYiPjxicj48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0i YXJpYWwsIHNhbnMtc2VyaWYiPkkmIzM5O3ZlIHJlc3BvbmRlZCBpbiBsaW5lIHRvIHlvdXIgcXVl c3Rpb25zLjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlh bCwgc2Fucy1zZXJpZiI+PGJyPgoKPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIy MjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5SZWdhcmRzPC9mb250PjwvZGl2PjxkaXY+PGZv bnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5LZW48YnI+PC9mb250 Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBjbGFzcz0iaW0iPk9uIFN1biwgQXBy IDEsIDIwMTIgYXQgMzowMCBQTSwgSuly6W1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9 Im1haWx0bzpqZXJAcHJpbnRzdGFja3RyYWNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmplckBwcmlu dHN0YWNrdHJhY2Uub3JnPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KCjxibG9ja3F1b3RlIGNs YXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFw eCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPkhpIEZvcmdlIFRlYW0hPGRpdj48YnI+PC9k aXY+PGRpdj5JIHdvdWxkIGxpa2UgdG8gY3JlYXRlIGEgcGx1Z2luIHRvIG1hbmFnZSBqYXZhZWUg cG9ydGxldHMuPC9kaXY+PGRpdj5BIGZpcnN0IGNvbW1pdCBpcyBhdmFpbGFibGUgaGVyZaA8YSBo cmVmPSJodHRwOi8vZ29vLmdsL09LZ3NHIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2dvby5nbC9P S2dzRzwvYT6gLqA8L2Rpdj4KCjxkaXY+PGJyPgo8L2Rpdj48ZGl2PkJlZm9yZSBnb2luZyBmdXJ0 aGVyIGFuZCBjcmVhdGUgYSBGb3JnZSBKaXJhIHRpY2tldCCgSSB3b3VsZCBhcHByZWNpYXRlIHlv dXIgb3Bpbmlvbi48L2Rpdj48ZGl2PqAtIERvIHlvdSB0aGluayBjb3JlL2phdmFlZS1hcGkgYW5k IGNvcmWgL2phdmFlZS1pbXBsoKBpcyBhIHJpZ2h0oHBsYWNlIG9yIEkgbmVlZCB0byBjcmVhdGUg YW4gb3RoZXIgcHJvamVjdD88L2Rpdj4KCjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rp dj48ZGl2PkkgdGhpbmsgdGhpcyBpcyB0aGUgY29ycmVjdCBwbGFjZSwgdGhvdWdoIExpbmNvbG4g d291bGQgaGF2ZSB0aGUgZmluYWwgc2F5IG9uIHRoYXQgOy0pPC9kaXY+PGRpdiBjbGFzcz0iaW0i PjxkaXY+oDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgi PgoKCjxkaXY+oC0gVGhlIEpCb3NzIFNocmlua3dyYXAgcHJvamVjdKBkb2VzbiYjMzk7dCBjdXJy ZW50bHkgaW5jbHVkZSB0aGUgcG9ydGxldC54bWwgZGVzY3JpcHRpb24uIEkgdGhpbmsgaXQmIzM5 O3MgaW50ZXJlc3RpbmcgdG8gZG8gdGhhdC4gKEkgY2FuIGNyZWF0ZSBhbiBvdGhlciBKaXJhIHRp Y2tldCk8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGRpdj5CeSBhbGwg bWVhbnMgZ28gYWhlYWQgYW5kIGNyZWF0ZSB0aGUgamlyYSBhbmQgZG8gdGhlIHdvcmsuIKBJdCB3 b3VsZCBiZSBxdWl0ZSBzdHJhaWdodCBmb3J3YXJkIHRvIGNvbXBsZXRlLiCgSSBteXNlbGYgZGlk IHRoZSBKU0Ygb25lcyBsYXN0IHdlZWssIGFuZCB3YXMgcGxhbm5pbmcgb24gZ2V0dGluZyB0byBw b3J0YWwgZGVzY3JpcHRvcnMgb3ZlciB0aGUgY29taW5nIHdlZWtzLiCgSXQmIzM5O3MganVzdCBh IGNhc2Ugb2YgYWRkaW5nIHRoZSBuZWNlc3NhcnkgeHNkIGZpbGVzLCBtYWtpbmcgc3VyZSB0aGUg Z2VuZXJhdGlvbiBwcm9jZXNzIHdvcmtlZCwgYW5kIHdyaXRpbmcgc29tZSB0ZXN0cyB0byB2ZXJp ZnkgaXQuIKBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIGFib3V0IGl0IGRyb3AgYnkgI2pib3Nz dGVzdGluZyBvbiBpcmMgYW5kIHNwZWFrIHdpdGggQW5kcmV3IChBTFIpIHdobyBsZWFkcyB0aGUg cHJvamVjdC48L2Rpdj4KPGRpdiBjbGFzcz0iaW0iPgo8ZGl2PqA8L2Rpdj48YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PqAtIFRoZSBxdWlja3N0YXJ0IG9w dGlvbiCgd291bGQgYmUgaW50ZXJlc3RpbmcgdG8gcHVzaCB0aGUgZ2VuZXJhdGVkIGNvZGUgaW4g YSBHYXRlSW4gaW5zdGFuY2UgKG5vdCBpbXBsZW1lbnRlZCB5ZXQpLjwvZGl2PgoKPC9ibG9ja3F1 b3RlPjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+WW91IGNvdWxkIGNlcnRhaW5seSBkbyBhIGRl cGxveSBvZiB0aGUgcG9ydGxldCB0byBHYXRlSW4sIG9yIGFueSBvdGhlciBwb3J0YWwsIGJ1dCBJ IHRoaW5rIGl0IG1ha2VzIHNlbnNlIGZvciB0aGF0IHRvIGJlIGEgc2VwYXJhdGUgY29uY2VybiBm cm9tIGNyZWF0aW5nIGEgcG9ydGxldCBhbmQgaXQmIzM5O3MgZGVzY3JpcHRvcnMuIKBUaGF0IGlz IGhvdyBhIGxvdCBvZiB0aGUgb3RoZXIgcGx1Z2lucyB3b3JrLCBhbmQgYWxzbyBiZWNhdXNlIHRo ZSBkZXBsb3ltZW50IHdvdWxkIGJlIHNwZWNpZmljIHRvIEdhdGVJbiwgYW5kIGl0IHdvdWxkIGJl IG1lc3N5IHRvIGhhdmUgYSBwbHVnaW4gdGhhdCBkZWFscyB3aXRoIGRlc2NyaXB0b3IgZ2VuZXJh dGlvbiBhbmQgZGVwbG95aW5nIHRvIGRpZmZlcmVudCBwb3J0YWwgY29udGFpbmVycy48L2Rpdj4K PGRpdiBjbGFzcz0iaW0iPgo8ZGl2PqA8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVv dGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtw YWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj6gLaBDb21tYW5kIG5hbWVzIGFuZCBvcHRpb25zIGFyZSBj b3JyZWN0PzwvZGl2PjxkaXY+VGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXY+Rm9yIG5vdyBoZXJlJiMzOTtzIHdoYXQgeW91IGNhbiBkbzqgPC9kaXY+PGRp dj6gJCBwb3J0bGV0IHNldHVwPC9kaXY+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJn bWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2Nj IHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgoKPGRpdj6gJKBwb3J0bGV0IGFkZCAtLW5hbWVkIGhl bGxvcG9ydGxldCAtLXRpdGxlICZxdW90O015IGZvcmdlIHBvcnRsZXQmcXVvdDsgLS1zaG9ydC10 aXRsZSBGb3JnZVBvcnRsZXQgLS1rZXl3b3JkcyAmcXVvdDtkZW1vLGZvcmdlLHBvcnRsZXQmcXVv dDs8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGRpdj5NaWdodCBtYWtl IGl0IGNsZWFyZXIgZm9yIGNvbW1hbmQgdG8gYmUgY2FsbGVkICZxdW90O25ldy1wb3J0bGV0JnF1 b3Q7IGluc3RlYWQgb2YgJnF1b3Q7YWRkJnF1b3Q7PC9kaXY+CjxkaXYgY2xhc3M9ImltIj4KPGRp dj6gPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAg MCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+Cjxk aXY+oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2 YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLnZpZXcgLS12YWx1ZSAmcXVvdDsvaG9tZS54 aHRtbCZxdW90OzwvZGl2PjxkaXY+oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxv cG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmVkaXQgLS12 YWx1ZSAmcXVvdDsvZWRpdC54aHRtbCZxdW90OzwvZGl2PgoKCjxkaXY+oCQgcG9ydGxldCBhZGQt cGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5k ZWZhdWx0Vmlld0lkLmhlbHAgLS12YWx1ZSAmcXVvdDsvaGVscC54aHRtbCZxdW90OzwvZGl2Pjwv YmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PkNvdWxkIGJlIG5pY2UgdG8gaGF2 ZSB0aGUgJnF1b3Q7bmV3LXBvcnRsZXQmcXVvdDsgY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0 ZSB0aGVzZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGRlZmF1bHQgdmFsdWVzIHlvdSBzcGVjaWZ5IGFi b3ZlLCBhcyB3aXRob3V0IHRoZW0gYSBwb3J0bGV0IHdvbiYjMzk7dCBkZXBsb3kgc3VjY2Vzc2Z1 bGx5LiCgSnVzdCBhcyB5b3UgaGF2ZSB3aXRoIHRoZSBkZWZhdWx0IHBvcnRsZXQgbW9kZXMgdGhh dCBhcmUgZGVmaW5lZC48L2Rpdj4KCjxkaXY+oDwvZGl2PjxkaXY+SXQgd291bGQgYWxzbyBiZSBu aWNlIHRvIGhhdmUgYWxpYXNlZCBhZGQtcGFyYW0gdmVyc2lvbnMgZm9yIHNwZWNpZmljYWxseSBh ZGRpbmcgYSB2aWV3LCBlZGl0IGFuZCBoZWxwIHZpZXdJZC4goEl0JiMzOTtzIHByZXR0eSBvbmVy b3VzIHRvIGZvcmNlIHNvbWVvbmUgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IHN5bnRheCBvZiBqYXZh eC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQuKiBldmVyeSB0aW1lIHRoZXkgd2FudCB0byBh ZGQgb3IgbW9kaWZ5IHdoYXQgdmlld0lkIGVhY2ggb2YgdGhvc2UgcG9ydGxldCBtb2RlcyBwb2lu dHMgYXQuPC9kaXY+Cgo8ZGl2Pjxicj48L2Rpdj48ZGl2PlNvIHlvdSBjb3VsZCBoYXZlIHNvbWV0 aGluZyBsaWtlOjwvZGl2PjxkaXY+JCBwb3J0bGV0IHNldC12aWV3LWlkIC0tcG9ydGxldCBoZWxs b3BvcnRsZXQgLS12aWV3ICZxdW90Oy9ob21lLmh0bWwmcXVvdDs8L2Rpdj48ZGl2PjxkaXY+JCBw b3J0bGV0IHNldC1lZGl0LWlkIC0tcG9ydGxldCBoZWxsb3BvcnRsZXQgLS12aWV3ICZxdW90Oy9l ZGl0Lmh0bWwmcXVvdDs8L2Rpdj4KCjwvZGl2PjxkaXY+PGRpdj4kIHBvcnRsZXQgc2V0LWhlbHAt aWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLXZpZXcgJnF1b3Q7L2hlbHAuaHRtbCZxdW90Ozwv ZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YW5kIHRoZW4gaW50ZXJuYWxseSBpdCBhY3R1 YWxseSBjYWxscyBhZGQtcGFyYW0gd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGFwcHJvcHJpYXRl IHBhcmFtIG5hbWUuPC9kaXY+Cgo8ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21h aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PjxkaXYgY2xhc3M9Img1Ij48ZGl2Pjxicj48L2Rp dj48ZGl2PkFuZCB0aGUgcmVzdWx0IGlzIDoKPC9kaXY+PGRpdj5zcmMvbWFpbi93ZWJhcHAvV0VC LUlORi9wb3J0bGV0LnhtbDwvZGl2PjxkaXY+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2Rpdj48ZGl2PjxkaXY+PGRpdj4mbHQ7P3htbCB2ZXJz aW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90OyBzdGFuZGFsb25l PSZxdW90O25vJnF1b3Q7PyZndDs8L2Rpdj4KCgo8ZGl2PiZsdDtwb3J0bGV0LWFwcCB4bWxucz0m cXVvdDs8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wb3J0bGV0L3BvcnRsZXQt YXBwXzJfMC54c2QiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9w b3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2Q8L2E+JnF1b3Q7IHhtbG5zOnhzaT0mcXVvdDs8YSBo cmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgdGFyZ2V0PSJf YmxhbmsiPmh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlPC9hPiZxdW90 OyB2ZXJzaW9uPSZxdW90OzIuMCZxdW90OyB4c2k6c2NoZW1hTG9jYXRpb249JnF1b3Q7PGEgaHJl Zj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNk IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0 bGV0LWFwcF8yXzAueHNkPC9hPiZxdW90OyZndDs8L2Rpdj4KCgo8ZGl2PqAgJmx0O3BvcnRsZXQm Z3Q7PC9kaXY+PGRpdj6gIKAgJmx0O3BvcnRsZXQtbmFtZSZndDtoZWxsb3BvcnRsZXQmbHQ7L3Bv cnRsZXQtbmFtZSZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7cG9ydGxldC1jbGFzcyZndDtqYXZheC5w b3J0bGV0LmZhY2VzLkdlbmVyaWNGYWNlc1BvcnRsZXQmbHQ7L3BvcnRsZXQtY2xhc3MmZ3Q7PC9k aXY+PGRpdj6gIKAgJmx0O3N1cHBvcnRzJmd0OzwvZGl2PgoKCjxkaXY+oCCgIKAgJmx0O21pbWUt dHlwZSZndDt0ZXh0L2h0bWwmbHQ7L21pbWUtdHlwZSZndDs8L2Rpdj48ZGl2PqAgoCCgICZsdDtw b3J0bGV0LW1vZGUmZ3Q7RURJVCZsdDsvcG9ydGxldC1tb2RlJmd0OzwvZGl2PjxkaXY+oCCgIKAg Jmx0O3BvcnRsZXQtbW9kZSZndDtIRUxQJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj6g IKAgoCAmbHQ7cG9ydGxldC1tb2RlJmd0O1ZJRVcmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj4K Cgo8ZGl2PqAgoCAmbHQ7L3N1cHBvcnRzJmd0OzwvZGl2PjxkaXY+oCCgICZsdDtwb3J0bGV0LWlu Zm8mZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7dGl0bGUmZ3Q7TXkgZm9yZ2UgcG9ydGxldCZsdDsv dGl0bGUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7c2hvcnQtdGl0bGUmZ3Q7Rm9yZ2VQb3J0bGV0 Jmx0Oy9zaG9ydC10aXRsZSZndDs8L2Rpdj48ZGl2PqAgoCCgICZsdDtrZXl3b3JkcyZndDtkZW1v LGZvcmdlLHBvcnRsZXQmbHQ7L2tleXdvcmRzJmd0OzwvZGl2PgoKCjxkaXY+oCCgICZsdDsvcG9y dGxldC1pbmZvJmd0OzwvZGl2PjxkaXY+oCCgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+ oCCgIKAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLnZpZXcm bHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7dmFsdWUmZ3Q7L2hvbWUueGh0bWwmbHQ7 L3ZhbHVlJmd0OzwvZGl2PjxkaXY+oCCgICZsdDsvaW5pdC1wYXJhbSZndDs8L2Rpdj4KCgo8ZGl2 PqAgoCAmbHQ7aW5pdC1wYXJhbSZndDs8L2Rpdj48ZGl2PqAgoCCgICZsdDtuYW1lJmd0O2phdmF4 LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5lZGl0Jmx0Oy9uYW1lJmd0OzwvZGl2PjxkaXY+ oCCgIKAgJmx0O3ZhbHVlJmd0Oy9lZGl0LnhodG1sJmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PqAg oCAmbHQ7L2luaXQtcGFyYW0mZ3Q7PC9kaXY+PGRpdj6gIKAgJmx0O2luaXQtcGFyYW0mZ3Q7PC9k aXY+CgoKPGRpdj6gIKAgoCAmbHQ7bmFtZSZndDtqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRW aWV3SWQuaGVscCZsdDsvbmFtZSZndDs8L2Rpdj48ZGl2PqAgoCCgICZsdDt2YWx1ZSZndDsvaGVs cC54aHRtbCZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj6gIKAgJmx0Oy9pbml0LXBhcmFtJmd0Ozwv ZGl2PjxkaXY+oCAmbHQ7L3BvcnRsZXQmZ3Q7PC9kaXY+PGRpdj4mbHQ7L3BvcnRsZXQtYXBwJmd0 OzwvZGl2PgoKCjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ UmVnYWRzLDwvZGl2PjxkaXY+Suly6W1pZS48L2Rpdj4KPGJyPjwvZGl2PjwvZGl2Pl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpmb3JnZS1kZXYgbWFp bGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZyIg dGFyZ2V0PSJfYmxhbmsiPmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgo8YSBocmVm PSJodHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldiIgdGFy Z2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9y Z2UtZGV2PC9hPjxicj4KPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+Cjxicj5fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KZm9yZ2UtZGV2 IG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOmZvcmdlLWRldkBsaXN0cy5qYm9zcy5v cmciPmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwczovL2xp c3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldiIgdGFyZ2V0PSJfYmxhbmsi Pmh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2PC9hPjxi cj4KPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PGJyIGNsZWFyPSJhbGwiPjxicj4tLSA8YnI+ TGluY29sbiBCYXh0ZXIsIElJSTxicj48YSBocmVmPSJodHRwOi8vb2Nwc29mdC5vcmciIHRhcmdl dD0iX2JsYW5rIj5odHRwOi8vb2Nwc29mdC5vcmc8L2E+PGJyPiZxdW90O1NpbXBsZXIgaXMgYmV0 dGVyLiZxdW90Ozxicj4K --===============6177716218885527745==-- From jer at printstacktrace.org Mon Apr 2 17:31:16 2012 Content-Type: multipart/mixed; boundary="===============5166042712778735694==" MIME-Version: 1.0 From: =?utf-8?q?J=C3=A9r=C3=A9mie_=3Cjer_at_printstacktrace=2Eorg=3E?= To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Mon, 02 Apr 2012 23:31:11 +0200 Message-ID: In-Reply-To: CAEp_U4HkDqof76NyPyP26iUQnMvjSaUCSGyuKMcKZMZOR7OogQ@mail.gmail.com --===============5166042712778735694== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thx Lincoln and Ken, I will follow your advice, I hope to provide a better version soon. Regards, J=C3=A9r=C3=A9mie. Le 2 avril 2012 21:46, Lincoln Baxter, III a =C3=A9crit : > I think this should probably be a standalone plugin for now, we can move > it into the core later as it matures! > > Go ahead and open a ticket in FORGEPLUGINS if you want one to track this. > Hopefully we will have our plugin site up and running soon so you won't > need to create JIRAs, you'll just create an account and get writing! > > Looking forward to seeing what you come up with! > ~Lincoln > > > On Mon, Apr 2, 2012 at 9:35 AM, Ken Finnigan wrote: > >> Hi J=C3=A9r=C3=A9mie, >> >> Thanks for putting an initial portal plugin together. It was something >> on my list for the months ahead, but you beat me to it! ;-) >> >> I've responded in line to your questions. >> >> Regards >> Ken >> >> On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: >> >>> Hi Forge Team! >>> >>> I would like to create a plugin to manage javaee portlets. >>> A first commit is available here http://goo.gl/OKgsG . >>> >>> Before going further and create a Forge Jira ticket I would appreciate >>> your opinion. >>> - Do you think core/javaee-api and core /javaee-impl is a right place >>> or I need to create an other project? >>> >> >> I think this is the correct place, though Lincoln would have the final >> say on that ;-) >> >> >>> - The JBoss Shrinkwrap project doesn't currently include the >>> portlet.xml description. I think it's interesting to do that. (I can cr= eate >>> an other Jira ticket) >>> >> >> By all means go ahead and create the jira and do the work. It would be >> quite straight forward to complete. I myself did the JSF ones last week, >> and was planning on getting to portal descriptors over the coming weeks. >> It's just a case of adding the necessary xsd files, making sure the >> generation process worked, and writing some tests to verify it. If you >> have any questions about it drop by #jbosstesting on irc and speak with >> Andrew (ALR) who leads the project. >> >> >>> - The quickstart option would be interesting to push the generated >>> code in a GateIn instance (not implemented yet). >>> >> >> You could certainly do a deploy of the portlet to GateIn, or any other >> portal, but I think it makes sense for that to be a separate concern from >> creating a portlet and it's descriptors. That is how a lot of the other >> plugins work, and also because the deployment would be specific to GateI= n, >> and it would be messy to have a plugin that deals with descriptor >> generation and deploying to different portal containers. >> >> >>> - Command names and options are correct? >>> Thanks for your comments. >>> >>> For now here's what you can do: >>> $ portlet setup >>> >> $ portlet add --named helloportlet --title "My forge portlet" >>> --short-title ForgePortlet --keywords "demo,forge,portlet" >>> >> >> Might make it clearer for command to be called "new-portlet" instead of >> "add" >> >> >>> $ portlet add-param --portlet helloportlet --name >>> javax.portlet.faces.defaultViewId.view --value "/home.xhtml" >>> $ portlet add-param --portlet helloportlet --name >>> javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" >>> $ portlet add-param --portlet helloportlet --name >>> javax.portlet.faces.defaultViewId.help --value "/help.xhtml" >>> >> >> Could be nice to have the "new-portlet" command automatically create >> these parameters with the default values you specify above, as without t= hem >> a portlet won't deploy successfully. Just as you have with the default >> portlet modes that are defined. >> >> It would also be nice to have aliased add-param versions for specifically >> adding a view, edit and help viewId. It's pretty onerous to force someo= ne >> to remember the exact syntax of javax.portlet.faces.defaultViewId.* every >> time they want to add or modify what viewId each of those portlet modes >> points at. >> >> So you could have something like: >> $ portlet set-view-id --portlet helloportlet --view "/home.html" >> $ portlet set-edit-id --portlet helloportlet --view "/edit.html" >> $ portlet set-help-id --portlet helloportlet --view "/help.html" >> >> and then internally it actually calls add-param with the addition of the >> appropriate param name. >> >> >>> And the result is : >>> src/main/webapp/WEB-INF/portlet.xml >>> ----------------------------------------------------- >>> >>> >> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi=3D" >>> http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" >>> xsi:schemaLocation=3D" >>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> >>> >>> helloportlet >>> >>> javax.portlet.faces.GenericFacesPortlet >>> >>> text/html >>> EDIT >>> HELP >>> VIEW >>> >>> >>> My forge portlet >>> ForgePortlet >>> demo,forge,portlet >>> >>> >>> javax.portlet.faces.defaultViewId.view >>> /home.xhtml >>> >>> >>> javax.portlet.faces.defaultViewId.edit >>> /edit.xhtml >>> >>> >>> javax.portlet.faces.defaultViewId.help >>> /help.xhtml >>> >>> >>> >>> >>> >>> Regads, >>> J=C3=A9r=C3=A9mie. >>> >>> _______________________________________________ >>> forge-dev mailing list >>> forge-dev(a)lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/forge-dev >>> >>> >> >> _______________________________________________ >> forge-dev mailing list >> forge-dev(a)lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/forge-dev >> >> > > > -- > Lincoln Baxter, III > http://ocpsoft.org > "Simpler is better." > > _______________________________________________ > forge-dev mailing list > forge-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/forge-dev > > --===============5166042712778735694== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGJyPlRoeCBMaW5jb2xuIGFuZCBLZW4sPGRpdj48YnI+PC9kaXY+PGRpdj5JIHdpbGwgZm9sbG93 IHlvdXIgYWR2aWNlLMKgSSBob3BlIHRvIHByb3ZpZGUgYSBiZXR0ZXIgdmVyc2lvbiBzb29uLjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rpdj48ZGl2PkrDqXLDqW1pZS48YnI+ PGRpdj48YnI+PC9kaXY+PGRpdj7CoDxkaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4K TGUgMiBhdnJpbCAyMDEyIDIxOjQ2LCBMaW5jb2xuIEJheHRlciwgSUlJIDxzcGFuIGRpcj0ibHRy Ij4mbHQ7PGEgaHJlZj0ibWFpbHRvOmxpbmNvbG5iYXh0ZXJAZ21haWwuY29tIj5saW5jb2xuYmF4 dGVyQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiBhIMOpY3JpdCA6PGJyPjxibG9ja3F1b3RlIGNs YXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFw eCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgpJIHRoaW5rIHRoaXMgc2hvdWxkIHByb2Jh Ymx5IGJlIGEgc3RhbmRhbG9uZSBwbHVnaW4gZm9yIG5vdywgd2UgY2FuIG1vdmUgaXQgaW50byB0 aGUgY29yZSBsYXRlciBhcyBpdCBtYXR1cmVzITxicj48YnI+R28gYWhlYWQgYW5kIG9wZW4gYSB0 aWNrZXQgaW4gRk9SR0VQTFVHSU5TIGlmIHlvdSB3YW50IG9uZSB0byB0cmFjayB0aGlzLiBIb3Bl ZnVsbHkgd2Ugd2lsbCBoYXZlIG91ciBwbHVnaW4gc2l0ZSB1cCBhbmQgcnVubmluZyBzb29uIHNv IHlvdSB3b24mIzM5O3QgbmVlZCB0byBjcmVhdGUgSklSQXMsIHlvdSYjMzk7bGwganVzdCBjcmVh dGUgYW4gYWNjb3VudCBhbmQgZ2V0IHdyaXRpbmchPGJyPgoKPGJyPkxvb2tpbmcgZm9yd2FyZCB0 byBzZWVpbmcgd2hhdCB5b3UgY29tZSB1cCB3aXRoITxicj5+TGluY29sbjxkaXYgY2xhc3M9IkhP RW5aYiI+PGRpdiBjbGFzcz0iaDUiPjxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9u IE1vbiwgQXByIDIsIDIwMTIgYXQgOTozNSBBTSwgS2VuIEZpbm5pZ2FuIDxzcGFuIGRpcj0ibHRy Ij4mbHQ7PGEgaHJlZj0ibWFpbHRvOmtlbkBrZW5maW5uaWdhbi5tZSIgdGFyZ2V0PSJfYmxhbmsi PmtlbkBrZW5maW5uaWdhbi5tZTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+Cgo8YmxvY2txdW90 ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVm dDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij5IacKgPHNwYW4+SsOpcsOpbWllLDwv c3Bhbj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+ PGJyPjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwg c2Fucy1zZXJpZiI+VGhhbmtzIGZvciBwdXR0aW5nIGFuIGluaXRpYWwgcG9ydGFsIHBsdWdpbiB0 b2dldGhlci4gwqBJdCB3YXMgc29tZXRoaW5nIG9uIG15IGxpc3QgZm9yIHRoZSBtb250aHMgYWhl YWQsIGJ1dCB5b3UgYmVhdCBtZSB0byBpdCEgOy0pPC9mb250PjwvZGl2PgoKCjxkaXY+PGZvbnQg Y29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj48YnI+PC9mb250PjwvZGl2 PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5JJiMz OTt2ZSByZXNwb25kZWQgaW4gbGluZSB0byB5b3VyIHF1ZXN0aW9ucy48L2ZvbnQ+PC9kaXY+PGRp dj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPjxicj4KCgo8 L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMt c2VyaWYiPlJlZ2FyZHM8L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFj ZT0iYXJpYWwsIHNhbnMtc2VyaWYiPktlbjxicj48L2ZvbnQ+PGJyPjxkaXYgY2xhc3M9ImdtYWls X3F1b3RlIj48ZGl2Pk9uIFN1biwgQXByIDEsIDIwMTIgYXQgMzowMCBQTSwgSsOpcsOpbWllIDxz cGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmplckBwcmludHN0YWNrdHJhY2Uub3Jn IiB0YXJnZXQ9Il9ibGFuayI+amVyQHByaW50c3RhY2t0cmFjZS5vcmc8L2E+Jmd0Ozwvc3Bhbj4g d3JvdGU6PGJyPgoKCjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgi PkhpIEZvcmdlIFRlYW0hPGRpdj48YnI+PC9kaXY+PGRpdj5JIHdvdWxkIGxpa2UgdG8gY3JlYXRl IGEgcGx1Z2luIHRvIG1hbmFnZSBqYXZhZWUgcG9ydGxldHMuPC9kaXY+PGRpdj5BIGZpcnN0IGNv bW1pdCBpcyBhdmFpbGFibGUgaGVyZcKgPGEgaHJlZj0iaHR0cDovL2dvby5nbC9PS2dzRyIgdGFy Z2V0PSJfYmxhbmsiPmh0dHA6Ly9nb28uZ2wvT0tnc0c8L2E+wqAuwqA8L2Rpdj4KCgo8ZGl2Pjxi cj4KPC9kaXY+PGRpdj5CZWZvcmUgZ29pbmcgZnVydGhlciBhbmQgY3JlYXRlIGEgRm9yZ2UgSmly YSB0aWNrZXQgwqBJIHdvdWxkIGFwcHJlY2lhdGUgeW91ciBvcGluaW9uLjwvZGl2PjxkaXY+wqAt IERvIHlvdSB0aGluayBjb3JlL2phdmFlZS1hcGkgYW5kIGNvcmXCoC9qYXZhZWUtaW1wbMKgwqBp cyBhIHJpZ2h0wqBwbGFjZSBvciBJIG5lZWQgdG8gY3JlYXRlIGFuIG90aGVyIHByb2plY3Q/PC9k aXY+CgoKPC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+SSB0aGluayB0aGlz IGlzIHRoZSBjb3JyZWN0IHBsYWNlLCB0aG91Z2ggTGluY29sbiB3b3VsZCBoYXZlIHRoZSBmaW5h bCBzYXkgb24gdGhhdCA7LSk8L2Rpdj48ZGl2PjxkaXY+wqA8L2Rpdj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHgg I2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKPGRpdj7CoC0gVGhlIEpCb3NzIFNocmlu a3dyYXAgcHJvamVjdMKgZG9lc24mIzM5O3QgY3VycmVudGx5IGluY2x1ZGUgdGhlIHBvcnRsZXQu eG1sIGRlc2NyaXB0aW9uLiBJIHRoaW5rIGl0JiMzOTtzIGludGVyZXN0aW5nIHRvIGRvIHRoYXQu IChJIGNhbiBjcmVhdGUgYW4gb3RoZXIgSmlyYSB0aWNrZXQpPC9kaXY+PC9ibG9ja3F1b3RlPjxk aXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+QnkgYWxsIG1lYW5zIGdvIGFoZWFkIGFuZCBjcmVhdGUg dGhlIGppcmEgYW5kIGRvIHRoZSB3b3JrLiDCoEl0IHdvdWxkIGJlIHF1aXRlIHN0cmFpZ2h0IGZv cndhcmQgdG8gY29tcGxldGUuIMKgSSBteXNlbGYgZGlkIHRoZSBKU0Ygb25lcyBsYXN0IHdlZWss IGFuZCB3YXMgcGxhbm5pbmcgb24gZ2V0dGluZyB0byBwb3J0YWwgZGVzY3JpcHRvcnMgb3ZlciB0 aGUgY29taW5nIHdlZWtzLiDCoEl0JiMzOTtzIGp1c3QgYSBjYXNlIG9mIGFkZGluZyB0aGUgbmVj ZXNzYXJ5IHhzZCBmaWxlcywgbWFraW5nIHN1cmUgdGhlIGdlbmVyYXRpb24gcHJvY2VzcyB3b3Jr ZWQsIGFuZCB3cml0aW5nIHNvbWUgdGVzdHMgdG8gdmVyaWZ5IGl0LiDCoElmIHlvdSBoYXZlIGFu eSBxdWVzdGlvbnMgYWJvdXQgaXQgZHJvcCBieSAjamJvc3N0ZXN0aW5nIG9uIGlyYyBhbmQgc3Bl YWsgd2l0aCBBbmRyZXcgKEFMUikgd2hvIGxlYWRzIHRoZSBwcm9qZWN0LjwvZGl2PgoKPGRpdj4K PGRpdj7CoDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgi PjxkaXY+wqAtIFRoZSBxdWlja3N0YXJ0IG9wdGlvbiDCoHdvdWxkIGJlIGludGVyZXN0aW5nIHRv IHB1c2ggdGhlIGdlbmVyYXRlZCBjb2RlIGluIGEgR2F0ZUluIGluc3RhbmNlIChub3QgaW1wbGVt ZW50ZWQgeWV0KS48L2Rpdj4KCgo8L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGRp dj5Zb3UgY291bGQgY2VydGFpbmx5IGRvIGEgZGVwbG95IG9mIHRoZSBwb3J0bGV0IHRvIEdhdGVJ biwgb3IgYW55IG90aGVyIHBvcnRhbCwgYnV0IEkgdGhpbmsgaXQgbWFrZXMgc2Vuc2UgZm9yIHRo YXQgdG8gYmUgYSBzZXBhcmF0ZSBjb25jZXJuIGZyb20gY3JlYXRpbmcgYSBwb3J0bGV0IGFuZCBp dCYjMzk7cyBkZXNjcmlwdG9ycy4gwqBUaGF0IGlzIGhvdyBhIGxvdCBvZiB0aGUgb3RoZXIgcGx1 Z2lucyB3b3JrLCBhbmQgYWxzbyBiZWNhdXNlIHRoZSBkZXBsb3ltZW50IHdvdWxkIGJlIHNwZWNp ZmljIHRvIEdhdGVJbiwgYW5kIGl0IHdvdWxkIGJlIG1lc3N5IHRvIGhhdmUgYSBwbHVnaW4gdGhh dCBkZWFscyB3aXRoIGRlc2NyaXB0b3IgZ2VuZXJhdGlvbiBhbmQgZGVwbG95aW5nIHRvIGRpZmZl cmVudCBwb3J0YWwgY29udGFpbmVycy48L2Rpdj4KCjxkaXY+CjxkaXY+wqA8L2Rpdj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXIt bGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj7CoC3CoENvbW1hbmQg bmFtZXMgYW5kIG9wdGlvbnMgYXJlIGNvcnJlY3Q/PC9kaXY+PGRpdj5UaGFua3MgZm9yIHlvdXIg Y29tbWVudHMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5Gb3Igbm93IGhlcmUmIzM5O3Mgd2hh dCB5b3UgY2FuIGRvOsKgPC9kaXY+PGRpdj7CoCQgcG9ydGxldCBzZXR1cDwvZGl2PjwvYmxvY2tx dW90ZT48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAg LjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgo8ZGl2 PsKgJMKgcG9ydGxldCBhZGQgLS1uYW1lZCBoZWxsb3BvcnRsZXQgLS10aXRsZSAmcXVvdDtNeSBm b3JnZSBwb3J0bGV0JnF1b3Q7IC0tc2hvcnQtdGl0bGUgRm9yZ2VQb3J0bGV0IC0ta2V5d29yZHMg JnF1b3Q7ZGVtbyxmb3JnZSxwb3J0bGV0JnF1b3Q7PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJy PjwvZGl2PjwvZGl2PjxkaXY+TWlnaHQgbWFrZSBpdCBjbGVhcmVyIGZvciBjb21tYW5kIHRvIGJl IGNhbGxlZCAmcXVvdDtuZXctcG9ydGxldCZxdW90OyBpbnN0ZWFkIG9mICZxdW90O2FkZCZxdW90 OzwvZGl2PgoKPGRpdj4KPGRpdj7CoDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90 ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3Bh ZGRpbmctbGVmdDoxZXgiPgo8ZGl2PsKgJCBwb3J0bGV0IGFkZC1wYXJhbSAtLXBvcnRsZXQgaGVs bG9wb3J0bGV0IC0tbmFtZSBqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQudmlldyAt LXZhbHVlICZxdW90Oy9ob21lLnhodG1sJnF1b3Q7PC9kaXY+PGRpdj7CoCQgcG9ydGxldCBhZGQt cGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5k ZWZhdWx0Vmlld0lkLmVkaXQgLS12YWx1ZSAmcXVvdDsvZWRpdC54aHRtbCZxdW90OzwvZGl2PgoK Cgo8ZGl2PsKgJCBwb3J0bGV0IGFkZC1wYXJhbSAtLXBvcnRsZXQgaGVsbG9wb3J0bGV0IC0tbmFt ZSBqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQuaGVscCAtLXZhbHVlICZxdW90Oy9o ZWxwLnhodG1sJnF1b3Q7PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjxk aXY+Q291bGQgYmUgbmljZSB0byBoYXZlIHRoZSAmcXVvdDtuZXctcG9ydGxldCZxdW90OyBjb21t YW5kIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZXNlIHBhcmFtZXRlcnMgd2l0aCB0aGUgZGVmYXVs dCB2YWx1ZXMgeW91IHNwZWNpZnkgYWJvdmUsIGFzIHdpdGhvdXQgdGhlbSBhIHBvcnRsZXQgd29u JiMzOTt0IGRlcGxveSBzdWNjZXNzZnVsbHkuIMKgSnVzdCBhcyB5b3UgaGF2ZSB3aXRoIHRoZSBk ZWZhdWx0IHBvcnRsZXQgbW9kZXMgdGhhdCBhcmUgZGVmaW5lZC48L2Rpdj4KCgo8ZGl2PsKgPC9k aXY+PGRpdj5JdCB3b3VsZCBhbHNvIGJlIG5pY2UgdG8gaGF2ZSBhbGlhc2VkIGFkZC1wYXJhbSB2 ZXJzaW9ucyBmb3Igc3BlY2lmaWNhbGx5IGFkZGluZyBhIHZpZXcsIGVkaXQgYW5kIGhlbHAgdmll d0lkLiDCoEl0JiMzOTtzIHByZXR0eSBvbmVyb3VzIHRvIGZvcmNlIHNvbWVvbmUgdG8gcmVtZW1i ZXIgdGhlIGV4YWN0IHN5bnRheCBvZiBqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQu KiBldmVyeSB0aW1lIHRoZXkgd2FudCB0byBhZGQgb3IgbW9kaWZ5IHdoYXQgdmlld0lkIGVhY2gg b2YgdGhvc2UgcG9ydGxldCBtb2RlcyBwb2ludHMgYXQuPC9kaXY+CgoKPGRpdj48YnI+PC9kaXY+ PGRpdj5TbyB5b3UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZTo8L2Rpdj48ZGl2PiQgcG9ydGxl dCBzZXQtdmlldy1pZCAtLXBvcnRsZXQgaGVsbG9wb3J0bGV0IC0tdmlldyAmcXVvdDsvaG9tZS5o dG1sJnF1b3Q7PC9kaXY+PGRpdj48ZGl2PiQgcG9ydGxldCBzZXQtZWRpdC1pZCAtLXBvcnRsZXQg aGVsbG9wb3J0bGV0IC0tdmlldyAmcXVvdDsvZWRpdC5odG1sJnF1b3Q7PC9kaXY+CgoKPC9kaXY+ PGRpdj48ZGl2PiQgcG9ydGxldCBzZXQtaGVscC1pZCAtLXBvcnRsZXQgaGVsbG9wb3J0bGV0IC0t dmlldyAmcXVvdDsvaGVscC5odG1sJnF1b3Q7PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp dj5hbmQgdGhlbiBpbnRlcm5hbGx5IGl0IGFjdHVhbGx5IGNhbGxzIGFkZC1wYXJhbSB3aXRoIHRo ZSBhZGRpdGlvbiBvZiB0aGUgYXBwcm9wcmlhdGUgcGFyYW0gbmFtZS48L2Rpdj4KCgo8ZGl2Pjxi cj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAw IDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2 PjxkaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbmQgdGhlIHJlc3VsdCBpcyA6CjwvZGl2PjxkaXY+ c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvcG9ydGxldC54bWw8L2Rpdj48ZGl2Pi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9kaXY+PGRpdj48ZGl2 PjxkaXY+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVvdDsgZW5jb2Rpbmc9JnF1b3Q7VVRG LTgmcXVvdDsgc3RhbmRhbG9uZT0mcXVvdDtubyZxdW90Oz8mZ3Q7PC9kaXY+CgoKCjxkaXY+Jmx0 O3BvcnRsZXQtYXBwIHhtbG5zPSZxdW90OzxhIGhyZWY9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1s L25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMl8wLnhzZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9q YXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMl8wLnhzZDwvYT4mcXVvdDsg eG1sbnM6eHNpPSZxdW90OzxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h LWluc3RhbmNlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hl bWEtaW5zdGFuY2U8L2E+JnF1b3Q7IHZlcnNpb249JnF1b3Q7Mi4wJnF1b3Q7IHhzaTpzY2hlbWFM b2NhdGlvbj0mcXVvdDs8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wb3J0bGV0 L3BvcnRsZXQtYXBwXzJfMC54c2QiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29t L3htbC9ucy9wb3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2Q8L2E+JnF1b3Q7Jmd0OzwvZGl2PgoK Cgo8ZGl2PsKgICZsdDtwb3J0bGV0Jmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0O3BvcnRsZXQtbmFt ZSZndDtoZWxsb3BvcnRsZXQmbHQ7L3BvcnRsZXQtbmFtZSZndDs8L2Rpdj48ZGl2PsKgIMKgICZs dDtwb3J0bGV0LWNsYXNzJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuR2VuZXJpY0ZhY2VzUG9ydGxl dCZsdDsvcG9ydGxldC1jbGFzcyZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDtzdXBwb3J0cyZndDs8 L2Rpdj4KCgoKPGRpdj7CoCDCoCDCoCAmbHQ7bWltZS10eXBlJmd0O3RleHQvaHRtbCZsdDsvbWlt ZS10eXBlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3BvcnRsZXQtbW9kZSZndDtFRElUJmx0 Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7cG9ydGxldC1tb2RlJmd0 O0hFTFAmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDtwb3J0bGV0 LW1vZGUmZ3Q7VklFVyZsdDsvcG9ydGxldC1tb2RlJmd0OzwvZGl2PgoKCgo8ZGl2PsKgIMKgICZs dDsvc3VwcG9ydHMmZ3Q7PC9kaXY+PGRpdj7CoCDCoCAmbHQ7cG9ydGxldC1pbmZvJmd0OzwvZGl2 PjxkaXY+wqAgwqAgwqAgJmx0O3RpdGxlJmd0O015IGZvcmdlIHBvcnRsZXQmbHQ7L3RpdGxlJmd0 OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3Nob3J0LXRpdGxlJmd0O0ZvcmdlUG9ydGxldCZsdDsv c2hvcnQtdGl0bGUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7a2V5d29yZHMmZ3Q7ZGVtbyxm b3JnZSxwb3J0bGV0Jmx0Oy9rZXl3b3JkcyZndDs8L2Rpdj4KCgoKPGRpdj7CoCDCoCAmbHQ7L3Bv cnRsZXQtaW5mbyZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2Pjxk aXY+wqAgwqAgwqAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lk LnZpZXcmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUmZ3Q7L2hvbWUu eGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBhcmFtJmd0Ozwv ZGl2PgoKCgo8ZGl2PsKgIMKgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAg Jmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmVkaXQmbHQ7L25h bWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUmZ3Q7L2VkaXQueGh0bWwmbHQ7L3Zh bHVlJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAg wqAgJmx0O2luaXQtcGFyYW0mZ3Q7PC9kaXY+CgoKCjxkaXY+wqAgwqAgwqAgJmx0O25hbWUmZ3Q7 amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmhlbHAmbHQ7L25hbWUmZ3Q7PC9kaXY+ PGRpdj7CoCDCoCDCoCAmbHQ7dmFsdWUmZ3Q7L2hlbHAueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2 PjxkaXY+wqAgwqAgJmx0Oy9pbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAgJmx0Oy9wb3J0bGV0 Jmd0OzwvZGl2PjxkaXY+Jmx0Oy9wb3J0bGV0LWFwcCZndDs8L2Rpdj4KCgoKPC9kaXY+PGRpdj48 YnI+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5SZWdhZHMsPC9kaXY+PGRpdj5Kw6ly w6ltaWUuPC9kaXY+Cjxicj48L2Rpdj48L2Rpdj5fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXzxicj4KZm9yZ2UtZGV2IG1haWxpbmcgbGlzdDxicj4KPGEgaHJl Zj0ibWFpbHRvOmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmciIHRhcmdldD0iX2JsYW5rIj5mb3Jn ZS1kZXZAbGlzdHMuamJvc3Mub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5qYm9z cy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczov L2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldjwvYT48YnI+Cjxicj48 L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2Pgo8YnI+X19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX188YnI+CmZvcmdlLWRldiBtYWlsaW5nIGxpc3Q8YnI+Cjxh IGhyZWY9Im1haWx0bzpmb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnIiB0YXJnZXQ9Il9ibGFuayI+ Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMu amJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0YXJnZXQ9Il9ibGFuayI+aHR0 cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXY8L2E+PGJyPgo8 YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48YnIgY2xlYXI9ImFsbCI+PGJyPjwvZGl2PjwvZGl2 PjxzcGFuIGNsYXNzPSJIT0VuWmIiPjxmb250IGNvbG9yPSIjODg4ODg4Ij4tLSA8YnI+TGluY29s biBCYXh0ZXIsIElJSTxicj48YSBocmVmPSJodHRwOi8vb2Nwc29mdC5vcmciIHRhcmdldD0iX2Js YW5rIj5odHRwOi8vb2Nwc29mdC5vcmc8L2E+PGJyPiZxdW90O1NpbXBsZXIgaXMgYmV0dGVyLiZx dW90Ozxicj4KCjwvZm9udD48L3NwYW4+PGJyPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fPGJyPgpmb3JnZS1kZXYgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVm PSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZyI+Zm9yZ2UtZGV2QGxpc3RzLmpib3Nz Lm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlz dGluZm8vZm9yZ2UtZGV2IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcv bWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2 Pjxicj48L2Rpdj48L2Rpdj48L2Rpdj4K --===============5166042712778735694==-- From jer at printstacktrace.org Thu Apr 12 18:52:04 2012 Content-Type: multipart/mixed; boundary="===============0241181889070127284==" MIME-Version: 1.0 From: =?utf-8?q?J=C3=A9r=C3=A9mie_=3Cjer_at_printstacktrace=2Eorg=3E?= To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Fri, 13 Apr 2012 00:51:59 +0200 Message-ID: In-Reply-To: CAGM=3hscUWVe72wnv4-+2AshXZsFM_Umq7QgaNixFn1pS-3ypg@mail.gmail.com --===============0241181889070127284== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi forge team, Here is a new version of the plugin : https://github.com/jerr/plugin-portlet For the next step I would like to add the quickstart mode. Your comments are welcome! Regards, Jeremie. Le 2 avril 2012 23:31, J=C3=A9r=C3=A9mie a =C3= =A9crit : > > Thx Lincoln and Ken, > > I will follow your advice, I hope to provide a better version soon. > > Regards, > J=C3=A9r=C3=A9mie. > > > > Le 2 avril 2012 21:46, Lincoln Baxter, III a > =C3=A9crit : > > I think this should probably be a standalone plugin for now, we can move >> it into the core later as it matures! >> >> Go ahead and open a ticket in FORGEPLUGINS if you want one to track this. >> Hopefully we will have our plugin site up and running soon so you won't >> need to create JIRAs, you'll just create an account and get writing! >> >> Looking forward to seeing what you come up with! >> ~Lincoln >> >> >> On Mon, Apr 2, 2012 at 9:35 AM, Ken Finnigan wrot= e: >> >>> Hi J=C3=A9r=C3=A9mie, >>> >>> Thanks for putting an initial portal plugin together. It was something >>> on my list for the months ahead, but you beat me to it! ;-) >>> >>> I've responded in line to your questions. >>> >>> Regards >>> Ken >>> >>> On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: >>> >>>> Hi Forge Team! >>>> >>>> I would like to create a plugin to manage javaee portlets. >>>> A first commit is available here http://goo.gl/OKgsG . >>>> >>>> Before going further and create a Forge Jira ticket I would appreciate >>>> your opinion. >>>> - Do you think core/javaee-api and core /javaee-impl is a right place >>>> or I need to create an other project? >>>> >>> >>> I think this is the correct place, though Lincoln would have the final >>> say on that ;-) >>> >>> >>>> - The JBoss Shrinkwrap project doesn't currently include the >>>> portlet.xml description. I think it's interesting to do that. (I can c= reate >>>> an other Jira ticket) >>>> >>> >>> By all means go ahead and create the jira and do the work. It would be >>> quite straight forward to complete. I myself did the JSF ones last wee= k, >>> and was planning on getting to portal descriptors over the coming weeks. >>> It's just a case of adding the necessary xsd files, making sure the >>> generation process worked, and writing some tests to verify it. If you >>> have any questions about it drop by #jbosstesting on irc and speak with >>> Andrew (ALR) who leads the project. >>> >>> >>>> - The quickstart option would be interesting to push the generated >>>> code in a GateIn instance (not implemented yet). >>>> >>> >>> You could certainly do a deploy of the portlet to GateIn, or any other >>> portal, but I think it makes sense for that to be a separate concern fr= om >>> creating a portlet and it's descriptors. That is how a lot of the other >>> plugins work, and also because the deployment would be specific to Gate= In, >>> and it would be messy to have a plugin that deals with descriptor >>> generation and deploying to different portal containers. >>> >>> >>>> - Command names and options are correct? >>>> Thanks for your comments. >>>> >>>> For now here's what you can do: >>>> $ portlet setup >>>> >>> $ portlet add --named helloportlet --title "My forge portlet" >>>> --short-title ForgePortlet --keywords "demo,forge,portlet" >>>> >>> >>> Might make it clearer for command to be called "new-portlet" instead of >>> "add" >>> >>> >>>> $ portlet add-param --portlet helloportlet --name >>>> javax.portlet.faces.defaultViewId.view --value "/home.xhtml" >>>> $ portlet add-param --portlet helloportlet --name >>>> javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" >>>> $ portlet add-param --portlet helloportlet --name >>>> javax.portlet.faces.defaultViewId.help --value "/help.xhtml" >>>> >>> >>> Could be nice to have the "new-portlet" command automatically create >>> these parameters with the default values you specify above, as without = them >>> a portlet won't deploy successfully. Just as you have with the default >>> portlet modes that are defined. >>> >>> It would also be nice to have aliased add-param versions for >>> specifically adding a view, edit and help viewId. It's pretty onerous = to >>> force someone to remember the exact syntax of >>> javax.portlet.faces.defaultViewId.* every time they want to add or modi= fy >>> what viewId each of those portlet modes points at. >>> >>> So you could have something like: >>> $ portlet set-view-id --portlet helloportlet --view "/home.html" >>> $ portlet set-edit-id --portlet helloportlet --view "/edit.html" >>> $ portlet set-help-id --portlet helloportlet --view "/help.html" >>> >>> and then internally it actually calls add-param with the addition of the >>> appropriate param name. >>> >>> >>>> And the result is : >>>> src/main/webapp/WEB-INF/portlet.xml >>>> ----------------------------------------------------- >>>> >>>> >>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi=3D" >>>> http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" >>>> xsi:schemaLocation=3D" >>>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> >>>> >>>> helloportlet >>>> >>>> javax.portlet.faces.GenericFacesPortlet >>>> >>>> text/html >>>> EDIT >>>> HELP >>>> VIEW >>>> >>>> >>>> My forge portlet >>>> ForgePortlet >>>> demo,forge,portlet >>>> >>>> >>>> javax.portlet.faces.defaultViewId.view >>>> /home.xhtml >>>> >>>> >>>> javax.portlet.faces.defaultViewId.edit >>>> /edit.xhtml >>>> >>>> >>>> javax.portlet.faces.defaultViewId.help >>>> /help.xhtml >>>> >>>> >>>> >>>> >>>> >>>> Regads, >>>> J=C3=A9r=C3=A9mie. >>>> >>>> _______________________________________________ >>>> forge-dev mailing list >>>> forge-dev(a)lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>> >>>> >>> >>> _______________________________________________ >>> forge-dev mailing list >>> forge-dev(a)lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/forge-dev >>> >>> >> >> >> -- >> Lincoln Baxter, III >> http://ocpsoft.org >> "Simpler is better." >> >> _______________________________________________ >> forge-dev mailing list >> forge-dev(a)lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/forge-dev >> >> > --===============0241181889070127284== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SGkgZm9yZ2UgdGVhbSw8YnI+PGJyPkhlcmUgaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgcGx1Z2lu IDrCoAo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamVyci9wbHVnaW4tcG9ydGxldCI+aHR0 cHM6Ly9naXRodWIuY29tL2plcnIvcGx1Z2luLXBvcnRsZXQ8L2E+PGRpdj5Gb3IgdGhlIG5leHQg c3RlcCBJIHdvdWxkIGxpa2UgdG8gYWRkIHRoZSBxdWlja3N0YXJ0IG1vZGUuPC9kaXY+PGRpdj48 YnI+PC9kaXY+PGRpdj5Zb3VyIGNvbW1lbnRzIGFyZSB3ZWxjb21lITwvZGl2PjxkaXY+PGJyPgo8 L2Rpdj48ZGl2PlJlZ2FyZHMsPC9kaXY+PGRpdj5KZXJlbWllLjwvZGl2PjxkaXY+PGRpdj48YnI+ PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPkxlIDIgYXZyaWwgMjAxMiAyMzozMSwgSsOpcsOpbWll IDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmplckBwcmludHN0YWNrdHJhY2Uu b3JnIj5qZXJAcHJpbnRzdGFja3RyYWNlLm9yZzwvYT4mZ3Q7PC9zcGFuPiBhIMOpY3JpdCA6PGJy Pgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhl eDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48YnI+VGh4IExp bmNvbG4gYW5kIEtlbiw8ZGl2Pjxicj48L2Rpdj48ZGl2Pkkgd2lsbCBmb2xsb3cgeW91ciBhZHZp Y2UswqBJIGhvcGUgdG8gcHJvdmlkZSBhIGJldHRlciB2ZXJzaW9uIHNvb24uPC9kaXY+PGRpdj4K PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rpdj48ZGl2PkrDqXLDqW1pZS48YnI+PGRpdj48YnI+ PC9kaXY+PGRpdj7CoDxkaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4KTGUgMiBhdnJp bCAyMDEyIDIxOjQ2LCBMaW5jb2xuIEJheHRlciwgSUlJIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEg aHJlZj0ibWFpbHRvOmxpbmNvbG5iYXh0ZXJAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+bGlu Y29sbmJheHRlckBnbWFpbC5jb208L2E+Jmd0Ozwvc3Bhbj4gYSDDqWNyaXQgOjxkaXY+PGRpdiBj bGFzcz0iaDUiPjxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJn aW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4 Ij4KCkkgdGhpbmsgdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgYSBzdGFuZGFsb25lIHBsdWdpbiBm b3Igbm93LCB3ZSBjYW4gbW92ZSBpdCBpbnRvIHRoZSBjb3JlIGxhdGVyIGFzIGl0IG1hdHVyZXMh PGJyPjxicj5HbyBhaGVhZCBhbmQgb3BlbiBhIHRpY2tldCBpbiBGT1JHRVBMVUdJTlMgaWYgeW91 IHdhbnQgb25lIHRvIHRyYWNrIHRoaXMuIEhvcGVmdWxseSB3ZSB3aWxsIGhhdmUgb3VyIHBsdWdp biBzaXRlIHVwIGFuZCBydW5uaW5nIHNvb24gc28geW91IHdvbiYjMzk7dCBuZWVkIHRvIGNyZWF0 ZSBKSVJBcywgeW91JiMzOTtsbCBqdXN0IGNyZWF0ZSBhbiBhY2NvdW50IGFuZCBnZXQgd3JpdGlu ZyE8YnI+CgoKPGJyPkxvb2tpbmcgZm9yd2FyZCB0byBzZWVpbmcgd2hhdCB5b3UgY29tZSB1cCB3 aXRoITxicj5+TGluY29sbjxkaXY+PGRpdj48YnI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl Ij5PbiBNb24sIEFwciAyLCAyMDEyIGF0IDk6MzUgQU0sIEtlbiBGaW5uaWdhbiA8c3BhbiBkaXI9 Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzprZW5Aa2VuZmlubmlnYW4ubWUiIHRhcmdldD0iX2Js YW5rIj5rZW5Aa2VuZmlubmlnYW4ubWU8L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgoKCjxibG9j a3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRl ci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPkhpwqA8c3Bhbj5Kw6lyw6lt aWUsPC9zcGFuPjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNl cmlmIj48YnI+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFy aWFsLCBzYW5zLXNlcmlmIj5UaGFua3MgZm9yIHB1dHRpbmcgYW4gaW5pdGlhbCBwb3J0YWwgcGx1 Z2luIHRvZ2V0aGVyLiDCoEl0IHdhcyBzb21ldGhpbmcgb24gbXkgbGlzdCBmb3IgdGhlIG1vbnRo cyBhaGVhZCwgYnV0IHlvdSBiZWF0IG1lIHRvIGl0ISA7LSk8L2ZvbnQ+PC9kaXY+CgoKCjxkaXY+ PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj48YnI+PC9mb250 PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlm Ij5JJiMzOTt2ZSByZXNwb25kZWQgaW4gbGluZSB0byB5b3VyIHF1ZXN0aW9ucy48L2ZvbnQ+PC9k aXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPjxi cj4KCgoKPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFs LCBzYW5zLXNlcmlmIj5SZWdhcmRzPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIy MjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5LZW48YnI+PC9mb250Pjxicj48ZGl2IGNsYXNz PSJnbWFpbF9xdW90ZSI+PGRpdj5PbiBTdW4sIEFwciAxLCAyMDEyIGF0IDM6MDAgUE0sIErDqXLD qW1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpqZXJAcHJpbnRzdGFja3Ry YWNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmplckBwcmludHN0YWNrdHJhY2Uub3JnPC9hPiZndDs8 L3NwYW4+IHdyb3RlOjxicj4KCgoKPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+SGkgRm9yZ2UgVGVhbSE8ZGl2Pjxicj48L2Rpdj48ZGl2Pkkgd291bGQgbGlrZSB0 byBjcmVhdGUgYSBwbHVnaW4gdG8gbWFuYWdlIGphdmFlZSBwb3J0bGV0cy48L2Rpdj48ZGl2PkEg Zmlyc3QgY29tbWl0IGlzIGF2YWlsYWJsZSBoZXJlwqA8YSBocmVmPSJodHRwOi8vZ29vLmdsL09L Z3NHIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2dvby5nbC9PS2dzRzwvYT7CoC7CoDwvZGl2PgoK Cgo8ZGl2Pjxicj4KPC9kaXY+PGRpdj5CZWZvcmUgZ29pbmcgZnVydGhlciBhbmQgY3JlYXRlIGEg Rm9yZ2UgSmlyYSB0aWNrZXQgwqBJIHdvdWxkIGFwcHJlY2lhdGUgeW91ciBvcGluaW9uLjwvZGl2 PjxkaXY+wqAtIERvIHlvdSB0aGluayBjb3JlL2phdmFlZS1hcGkgYW5kIGNvcmXCoC9qYXZhZWUt aW1wbMKgwqBpcyBhIHJpZ2h0wqBwbGFjZSBvciBJIG5lZWQgdG8gY3JlYXRlIGFuIG90aGVyIHBy b2plY3Q/PC9kaXY+CgoKCjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2Pkkg dGhpbmsgdGhpcyBpcyB0aGUgY29ycmVjdCBwbGFjZSwgdGhvdWdoIExpbmNvbG4gd291bGQgaGF2 ZSB0aGUgZmluYWwgc2F5IG9uIHRoYXQgOy0pPC9kaXY+PGRpdj48ZGl2PsKgPC9kaXY+PGJsb2Nr cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVy LWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CgoKCgo8ZGl2PsKgLSBUaGUg SkJvc3MgU2hyaW5rd3JhcCBwcm9qZWN0wqBkb2VzbiYjMzk7dCBjdXJyZW50bHkgaW5jbHVkZSB0 aGUgcG9ydGxldC54bWwgZGVzY3JpcHRpb24uIEkgdGhpbmsgaXQmIzM5O3MgaW50ZXJlc3Rpbmcg dG8gZG8gdGhhdC4gKEkgY2FuIGNyZWF0ZSBhbiBvdGhlciBKaXJhIHRpY2tldCk8L2Rpdj48L2Js b2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGRpdj5CeSBhbGwgbWVhbnMgZ28gYWhlYWQg YW5kIGNyZWF0ZSB0aGUgamlyYSBhbmQgZG8gdGhlIHdvcmsuIMKgSXQgd291bGQgYmUgcXVpdGUg c3RyYWlnaHQgZm9yd2FyZCB0byBjb21wbGV0ZS4gwqBJIG15c2VsZiBkaWQgdGhlIEpTRiBvbmVz IGxhc3Qgd2VlaywgYW5kIHdhcyBwbGFubmluZyBvbiBnZXR0aW5nIHRvIHBvcnRhbCBkZXNjcmlw dG9ycyBvdmVyIHRoZSBjb21pbmcgd2Vla3MuIMKgSXQmIzM5O3MganVzdCBhIGNhc2Ugb2YgYWRk aW5nIHRoZSBuZWNlc3NhcnkgeHNkIGZpbGVzLCBtYWtpbmcgc3VyZSB0aGUgZ2VuZXJhdGlvbiBw cm9jZXNzIHdvcmtlZCwgYW5kIHdyaXRpbmcgc29tZSB0ZXN0cyB0byB2ZXJpZnkgaXQuIMKgSWYg eW91IGhhdmUgYW55IHF1ZXN0aW9ucyBhYm91dCBpdCBkcm9wIGJ5ICNqYm9zc3Rlc3Rpbmcgb24g aXJjIGFuZCBzcGVhayB3aXRoIEFuZHJldyAoQUxSKSB3aG8gbGVhZHMgdGhlIHByb2plY3QuPC9k aXY+CgoKPGRpdj4KPGRpdj7CoDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIg c3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRp bmctbGVmdDoxZXgiPjxkaXY+wqAtIFRoZSBxdWlja3N0YXJ0IG9wdGlvbiDCoHdvdWxkIGJlIGlu dGVyZXN0aW5nIHRvIHB1c2ggdGhlIGdlbmVyYXRlZCBjb2RlIGluIGEgR2F0ZUluIGluc3RhbmNl IChub3QgaW1wbGVtZW50ZWQgeWV0KS48L2Rpdj4KCgoKPC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwv ZGl2PjwvZGl2PjxkaXY+WW91IGNvdWxkIGNlcnRhaW5seSBkbyBhIGRlcGxveSBvZiB0aGUgcG9y dGxldCB0byBHYXRlSW4sIG9yIGFueSBvdGhlciBwb3J0YWwsIGJ1dCBJIHRoaW5rIGl0IG1ha2Vz IHNlbnNlIGZvciB0aGF0IHRvIGJlIGEgc2VwYXJhdGUgY29uY2VybiBmcm9tIGNyZWF0aW5nIGEg cG9ydGxldCBhbmQgaXQmIzM5O3MgZGVzY3JpcHRvcnMuIMKgVGhhdCBpcyBob3cgYSBsb3Qgb2Yg dGhlIG90aGVyIHBsdWdpbnMgd29yaywgYW5kIGFsc28gYmVjYXVzZSB0aGUgZGVwbG95bWVudCB3 b3VsZCBiZSBzcGVjaWZpYyB0byBHYXRlSW4sIGFuZCBpdCB3b3VsZCBiZSBtZXNzeSB0byBoYXZl IGEgcGx1Z2luIHRoYXQgZGVhbHMgd2l0aCBkZXNjcmlwdG9yIGdlbmVyYXRpb24gYW5kIGRlcGxv eWluZyB0byBkaWZmZXJlbnQgcG9ydGFsIGNvbnRhaW5lcnMuPC9kaXY+CgoKPGRpdj4KPGRpdj7C oDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAg MCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2 PsKgLcKgQ29tbWFuZCBuYW1lcyBhbmQgb3B0aW9ucyBhcmUgY29ycmVjdD88L2Rpdj48ZGl2PlRo YW5rcyBmb3IgeW91ciBjb21tZW50cy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkZvciBub3cg aGVyZSYjMzk7cyB3aGF0IHlvdSBjYW4gZG86wqA8L2Rpdj48ZGl2PsKgJCBwb3J0bGV0IHNldHVw PC9kaXY+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPgoKCgo8ZGl2PsKgJMKgcG9ydGxldCBhZGQgLS1uYW1lZCBoZWxsb3BvcnRsZXQgLS10 aXRsZSAmcXVvdDtNeSBmb3JnZSBwb3J0bGV0JnF1b3Q7IC0tc2hvcnQtdGl0bGUgRm9yZ2VQb3J0 bGV0IC0ta2V5d29yZHMgJnF1b3Q7ZGVtbyxmb3JnZSxwb3J0bGV0JnF1b3Q7PC9kaXY+PC9ibG9j a3F1b3RlPjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+TWlnaHQgbWFrZSBpdCBjbGVhcmVyIGZv ciBjb21tYW5kIHRvIGJlIGNhbGxlZCAmcXVvdDtuZXctcG9ydGxldCZxdW90OyBpbnN0ZWFkIG9m ICZxdW90O2FkZCZxdW90OzwvZGl2PgoKCjxkaXY+CjxkaXY+wqA8L2Rpdj48YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj7CoCQgcG9ydGxldCBhZGQtcGFy YW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5kZWZh dWx0Vmlld0lkLnZpZXcgLS12YWx1ZSAmcXVvdDsvaG9tZS54aHRtbCZxdW90OzwvZGl2PjxkaXY+ wqAkIHBvcnRsZXQgYWRkLXBhcmFtIC0tcG9ydGxldCBoZWxsb3BvcnRsZXQgLS1uYW1lIGphdmF4 LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5lZGl0IC0tdmFsdWUgJnF1b3Q7L2VkaXQueGh0 bWwmcXVvdDs8L2Rpdj4KCgoKCjxkaXY+wqAkIHBvcnRsZXQgYWRkLXBhcmFtIC0tcG9ydGxldCBo ZWxsb3BvcnRsZXQgLS1uYW1lIGphdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5oZWxw IC0tdmFsdWUgJnF1b3Q7L2hlbHAueGh0bWwmcXVvdDs8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48 YnI+PC9kaXY+PC9kaXY+PGRpdj5Db3VsZCBiZSBuaWNlIHRvIGhhdmUgdGhlICZxdW90O25ldy1w b3J0bGV0JnF1b3Q7IGNvbW1hbmQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlc2UgcGFyYW1ldGVy cyB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlcyB5b3Ugc3BlY2lmeSBhYm92ZSwgYXMgd2l0aG91dCB0 aGVtIGEgcG9ydGxldCB3b24mIzM5O3QgZGVwbG95IHN1Y2Nlc3NmdWxseS4gwqBKdXN0IGFzIHlv dSBoYXZlIHdpdGggdGhlIGRlZmF1bHQgcG9ydGxldCBtb2RlcyB0aGF0IGFyZSBkZWZpbmVkLjwv ZGl2PgoKCgo8ZGl2PsKgPC9kaXY+PGRpdj5JdCB3b3VsZCBhbHNvIGJlIG5pY2UgdG8gaGF2ZSBh bGlhc2VkIGFkZC1wYXJhbSB2ZXJzaW9ucyBmb3Igc3BlY2lmaWNhbGx5IGFkZGluZyBhIHZpZXcs IGVkaXQgYW5kIGhlbHAgdmlld0lkLiDCoEl0JiMzOTtzIHByZXR0eSBvbmVyb3VzIHRvIGZvcmNl IHNvbWVvbmUgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IHN5bnRheCBvZiBqYXZheC5wb3J0bGV0LmZh Y2VzLmRlZmF1bHRWaWV3SWQuKiBldmVyeSB0aW1lIHRoZXkgd2FudCB0byBhZGQgb3IgbW9kaWZ5 IHdoYXQgdmlld0lkIGVhY2ggb2YgdGhvc2UgcG9ydGxldCBtb2RlcyBwb2ludHMgYXQuPC9kaXY+ CgoKCjxkaXY+PGJyPjwvZGl2PjxkaXY+U28geW91IGNvdWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6 PC9kaXY+PGRpdj4kIHBvcnRsZXQgc2V0LXZpZXctaWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAt LXZpZXcgJnF1b3Q7L2hvbWUuaHRtbCZxdW90OzwvZGl2PjxkaXY+PGRpdj4kIHBvcnRsZXQgc2V0 LWVkaXQtaWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLXZpZXcgJnF1b3Q7L2VkaXQuaHRtbCZx dW90OzwvZGl2PgoKCgo8L2Rpdj48ZGl2PjxkaXY+JCBwb3J0bGV0IHNldC1oZWxwLWlkIC0tcG9y dGxldCBoZWxsb3BvcnRsZXQgLS12aWV3ICZxdW90Oy9oZWxwLmh0bWwmcXVvdDs8L2Rpdj48L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PmFuZCB0aGVuIGludGVybmFsbHkgaXQgYWN0dWFsbHkgY2Fs bHMgYWRkLXBhcmFtIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBhcHByb3ByaWF0ZSBwYXJhbSBu YW1lLjwvZGl2PgoKCgo8ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVv dGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtw YWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PjxkaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbmQgdGhlIHJl c3VsdCBpcyA6CjwvZGl2PjxkaXY+c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvcG9ydGxldC54bWw8 L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tPC9kaXY+PGRpdj48ZGl2PjxkaXY+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsxLjAmcXVv dDsgZW5jb2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDsgc3RhbmRhbG9uZT0mcXVvdDtubyZxdW90Oz8m Z3Q7PC9kaXY+CgoKCgo8ZGl2PiZsdDtwb3J0bGV0LWFwcCB4bWxucz0mcXVvdDs8YSBocmVmPSJo dHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wb3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2QiIHRh cmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wb3J0bGV0L3BvcnRsZXQt YXBwXzJfMC54c2Q8L2E+JnF1b3Q7IHhtbG5zOnhzaT0mcXVvdDs8YSBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93 d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlPC9hPiZxdW90OyB2ZXJzaW9uPSZxdW90 OzIuMCZxdW90OyB4c2k6c2NoZW1hTG9jYXRpb249JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEu c3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNkIiB0YXJnZXQ9Il9ibGFu ayI+aHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNk PC9hPiZxdW90OyZndDs8L2Rpdj4KCgoKCjxkaXY+wqAgJmx0O3BvcnRsZXQmZ3Q7PC9kaXY+PGRp dj7CoCDCoCAmbHQ7cG9ydGxldC1uYW1lJmd0O2hlbGxvcG9ydGxldCZsdDsvcG9ydGxldC1uYW1l Jmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0O3BvcnRsZXQtY2xhc3MmZ3Q7amF2YXgucG9ydGxldC5m YWNlcy5HZW5lcmljRmFjZXNQb3J0bGV0Jmx0Oy9wb3J0bGV0LWNsYXNzJmd0OzwvZGl2PjxkaXY+ wqAgwqAgJmx0O3N1cHBvcnRzJmd0OzwvZGl2PgoKCgoKPGRpdj7CoCDCoCDCoCAmbHQ7bWltZS10 eXBlJmd0O3RleHQvaHRtbCZsdDsvbWltZS10eXBlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0 O3BvcnRsZXQtbW9kZSZndDtFRElUJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj7CoCDC oCDCoCAmbHQ7cG9ydGxldC1tb2RlJmd0O0hFTFAmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj48 ZGl2PsKgIMKgIMKgICZsdDtwb3J0bGV0LW1vZGUmZ3Q7VklFVyZsdDsvcG9ydGxldC1tb2RlJmd0 OzwvZGl2PgoKCgoKPGRpdj7CoCDCoCAmbHQ7L3N1cHBvcnRzJmd0OzwvZGl2PjxkaXY+wqAgwqAg Jmx0O3BvcnRsZXQtaW5mbyZndDs8L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDt0aXRsZSZndDtNeSBm b3JnZSBwb3J0bGV0Jmx0Oy90aXRsZSZndDs8L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDtzaG9ydC10 aXRsZSZndDtGb3JnZVBvcnRsZXQmbHQ7L3Nob3J0LXRpdGxlJmd0OzwvZGl2PjxkaXY+wqAgwqAg wqAgJmx0O2tleXdvcmRzJmd0O2RlbW8sZm9yZ2UscG9ydGxldCZsdDsva2V5d29yZHMmZ3Q7PC9k aXY+CgoKCgo8ZGl2PsKgIMKgICZsdDsvcG9ydGxldC1pbmZvJmd0OzwvZGl2PjxkaXY+wqAgwqAg Jmx0O2luaXQtcGFyYW0mZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7bmFtZSZndDtqYXZheC5w b3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQudmlldyZsdDsvbmFtZSZndDs8L2Rpdj48ZGl2PsKg IMKgIMKgICZsdDt2YWx1ZSZndDsvaG9tZS54aHRtbCZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj7C oCDCoCAmbHQ7L2luaXQtcGFyYW0mZ3Q7PC9kaXY+CgoKCgo8ZGl2PsKgIMKgICZsdDtpbml0LXBh cmFtJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNl cy5kZWZhdWx0Vmlld0lkLmVkaXQmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7 dmFsdWUmZ3Q7L2VkaXQueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0Oy9p bml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0O2luaXQtcGFyYW0mZ3Q7PC9kaXY+CgoK Cgo8ZGl2PsKgIMKgIMKgICZsdDtuYW1lJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZp ZXdJZC5oZWxwJmx0Oy9uYW1lJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3ZhbHVlJmd0Oy9o ZWxwLnhodG1sJmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDsvaW5pdC1wYXJhbSZn dDs8L2Rpdj48ZGl2PsKgICZsdDsvcG9ydGxldCZndDs8L2Rpdj48ZGl2PiZsdDsvcG9ydGxldC1h cHAmZ3Q7PC9kaXY+CgoKCgo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48ZGl2PlJlZ2Fkcyw8L2Rpdj48ZGl2PkrDqXLDqW1pZS48L2Rpdj4KPGJyPjwvZGl2PjwvZGl2 Pl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpmb3Jn ZS1kZXYgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpi b3NzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJy Pgo8YSBocmVmPSJodHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zvcmdl LWRldiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlz dGluZm8vZm9yZ2UtZGV2PC9hPjxicj4KPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+ Cjxicj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4K Zm9yZ2UtZGV2IG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOmZvcmdlLWRldkBsaXN0 cy5qYm9zcy5vcmciIHRhcmdldD0iX2JsYW5rIj5mb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnPC9h Pjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9m b3JnZS1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZvcmdlLWRldjwvYT48YnI+Cjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjxi ciBjbGVhcj0iYWxsIj48YnI+PC9kaXY+PC9kaXY+PHNwYW4+PGZvbnQgY29sb3I9IiM4ODg4ODgi Pi0tIDxicj5MaW5jb2xuIEJheHRlciwgSUlJPGJyPjxhIGhyZWY9Imh0dHA6Ly9vY3Bzb2Z0Lm9y ZyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9vY3Bzb2Z0Lm9yZzwvYT48YnI+JnF1b3Q7U2ltcGxl ciBpcyBiZXR0ZXIuJnF1b3Q7PGJyPgoKCjwvZm9udD48L3NwYW4+PGJyPl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpmb3JnZS1kZXYgbWFpbGluZyBs aXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZyIgdGFyZ2V0 PSJfYmxhbmsiPmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRw czovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldiIgdGFyZ2V0PSJf YmxhbmsiPmh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2 PC9hPjxicj4KPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48L2Rpdj48YnI+PC9kaXY+PC9k aXY+PC9kaXY+CjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+PC9kaXY+Cg== --===============0241181889070127284==-- From lincolnbaxter at gmail.com Fri Apr 13 12:12:13 2012 Content-Type: multipart/mixed; boundary="===============7462320330340493423==" MIME-Version: 1.0 From: Lincoln Baxter, III To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Fri, 13 Apr 2012 12:12:13 -0400 Message-ID: In-Reply-To: CAGM=3hu0g7cm6fCEzod9k4kMqZ5v3oZv+DMSWG7RdPLTQEG3PA@mail.gmail.com --===============7462320330340493423== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hey J=C3=A9r=C3=A9mie! Could you perhaps put a few comments on how to use this plugin in the README? I'd love to give it a try :) Also, when you are ready, feel free to add this to the Central Plugin Index: https://docs.jboss.org/author/display/FORGE/Add+your+Plugin+to+the+Central+= Plugin+Index+%28CPI%29 Cheers! ~Lincoln On Thu, Apr 12, 2012 at 6:51 PM, J=C3=A9r=C3=A9mie wrote: > Hi forge team, > > Here is a new version of the plugin : > https://github.com/jerr/plugin-portlet > For the next step I would like to add the quickstart mode. > > Your comments are welcome! > > Regards, > Jeremie. > > Le 2 avril 2012 23:31, J=C3=A9r=C3=A9mie a = =C3=A9crit : > > >> Thx Lincoln and Ken, >> >> I will follow your advice, I hope to provide a better version soon. >> >> Regards, >> J=C3=A9r=C3=A9mie. >> >> >> >> Le 2 avril 2012 21:46, Lincoln Baxter, III a >> =C3=A9crit : >> >> I think this should probably be a standalone plugin for now, we can move >>> it into the core later as it matures! >>> >>> Go ahead and open a ticket in FORGEPLUGINS if you want one to track >>> this. Hopefully we will have our plugin site up and running soon so you >>> won't need to create JIRAs, you'll just create an account and get writi= ng! >>> >>> Looking forward to seeing what you come up with! >>> ~Lincoln >>> >>> >>> On Mon, Apr 2, 2012 at 9:35 AM, Ken Finnigan wro= te: >>> >>>> Hi J=C3=A9r=C3=A9mie, >>>> >>>> Thanks for putting an initial portal plugin together. It was something >>>> on my list for the months ahead, but you beat me to it! ;-) >>>> >>>> I've responded in line to your questions. >>>> >>>> Regards >>>> Ken >>>> >>>> On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: >>>> >>>>> Hi Forge Team! >>>>> >>>>> I would like to create a plugin to manage javaee portlets. >>>>> A first commit is available here http://goo.gl/OKgsG . >>>>> >>>>> Before going further and create a Forge Jira ticket I would >>>>> appreciate your opinion. >>>>> - Do you think core/javaee-api and core /javaee-impl is a >>>>> right place or I need to create an other project? >>>>> >>>> >>>> I think this is the correct place, though Lincoln would have the final >>>> say on that ;-) >>>> >>>> >>>>> - The JBoss Shrinkwrap project doesn't currently include the >>>>> portlet.xml description. I think it's interesting to do that. (I can = create >>>>> an other Jira ticket) >>>>> >>>> >>>> By all means go ahead and create the jira and do the work. It would be >>>> quite straight forward to complete. I myself did the JSF ones last we= ek, >>>> and was planning on getting to portal descriptors over the coming week= s. >>>> It's just a case of adding the necessary xsd files, making sure the >>>> generation process worked, and writing some tests to verify it. If you >>>> have any questions about it drop by #jbosstesting on irc and speak with >>>> Andrew (ALR) who leads the project. >>>> >>>> >>>>> - The quickstart option would be interesting to push the generated >>>>> code in a GateIn instance (not implemented yet). >>>>> >>>> >>>> You could certainly do a deploy of the portlet to GateIn, or any other >>>> portal, but I think it makes sense for that to be a separate concern f= rom >>>> creating a portlet and it's descriptors. That is how a lot of the oth= er >>>> plugins work, and also because the deployment would be specific to Gat= eIn, >>>> and it would be messy to have a plugin that deals with descriptor >>>> generation and deploying to different portal containers. >>>> >>>> >>>>> - Command names and options are correct? >>>>> Thanks for your comments. >>>>> >>>>> For now here's what you can do: >>>>> $ portlet setup >>>>> >>>> $ portlet add --named helloportlet --title "My forge portlet" >>>>> --short-title ForgePortlet --keywords "demo,forge,portlet" >>>>> >>>> >>>> Might make it clearer for command to be called "new-portlet" instead of >>>> "add" >>>> >>>> >>>>> $ portlet add-param --portlet helloportlet --name >>>>> javax.portlet.faces.defaultViewId.view --value "/home.xhtml" >>>>> $ portlet add-param --portlet helloportlet --name >>>>> javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" >>>>> $ portlet add-param --portlet helloportlet --name >>>>> javax.portlet.faces.defaultViewId.help --value "/help.xhtml" >>>>> >>>> >>>> Could be nice to have the "new-portlet" command automatically create >>>> these parameters with the default values you specify above, as without= them >>>> a portlet won't deploy successfully. Just as you have with the default >>>> portlet modes that are defined. >>>> >>>> It would also be nice to have aliased add-param versions for >>>> specifically adding a view, edit and help viewId. It's pretty onerous= to >>>> force someone to remember the exact syntax of >>>> javax.portlet.faces.defaultViewId.* every time they want to add or mod= ify >>>> what viewId each of those portlet modes points at. >>>> >>>> So you could have something like: >>>> $ portlet set-view-id --portlet helloportlet --view "/home.html" >>>> $ portlet set-edit-id --portlet helloportlet --view "/edit.html" >>>> $ portlet set-help-id --portlet helloportlet --view "/help.html" >>>> >>>> and then internally it actually calls add-param with the addition of >>>> the appropriate param name. >>>> >>>> >>>>> And the result is : >>>>> src/main/webapp/WEB-INF/portlet.xml >>>>> ----------------------------------------------------- >>>>> >>>>> >>>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi=3D" >>>>> http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" >>>>> xsi:schemaLocation=3D" >>>>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> >>>>> >>>>> helloportlet >>>>> >>>>> javax.portlet.faces.GenericFacesPortlet >>>>> >>>>> text/html >>>>> EDIT >>>>> HELP >>>>> VIEW >>>>> >>>>> >>>>> My forge portlet >>>>> ForgePortlet >>>>> demo,forge,portlet >>>>> >>>>> >>>>> javax.portlet.faces.defaultViewId.view >>>>> /home.xhtml >>>>> >>>>> >>>>> javax.portlet.faces.defaultViewId.edit >>>>> /edit.xhtml >>>>> >>>>> >>>>> javax.portlet.faces.defaultViewId.help >>>>> /help.xhtml >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Regads, >>>>> J=C3=A9r=C3=A9mie. >>>>> >>>>> _______________________________________________ >>>>> forge-dev mailing list >>>>> forge-dev(a)lists.jboss.org >>>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> forge-dev mailing list >>>> forge-dev(a)lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>> >>>> >>> >>> >>> -- >>> Lincoln Baxter, III >>> http://ocpsoft.org >>> "Simpler is better." >>> >>> _______________________________________________ >>> forge-dev mailing list >>> forge-dev(a)lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/forge-dev >>> >>> >> > > _______________________________________________ > forge-dev mailing list > forge-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/forge-dev > > -- = Lincoln Baxter, III http://ocpsoft.org "Simpler is better." --===============7462320330340493423== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" SGV5IErpcultaWUhPGJyPjxicj5Db3VsZCB5b3UgcGVyaGFwcyBwdXQgYSBmZXcgY29tbWVudHMg b24gaG93IHRvIHVzZSB0aGlzIHBsdWdpbiBpbiB0aGUgUkVBRE1FPyBJJiMzOTtkIGxvdmUgdG8g Z2l2ZSBpdCBhIHRyeSA6KSBBbHNvLCB3aGVuIHlvdSBhcmUgcmVhZHksIGZlZWwgZnJlZSB0byBh ZGQgdGhpcyB0byB0aGUgQ2VudHJhbCBQbHVnaW4gSW5kZXg6IDxhIGhyZWY9Imh0dHBzOi8vZG9j cy5qYm9zcy5vcmcvYXV0aG9yL2Rpc3BsYXkvRk9SR0UvQWRkK3lvdXIrUGx1Z2luK3RvK3RoZStD ZW50cmFsK1BsdWdpbitJbmRleCslMjhDUEklMjkiPmh0dHBzOi8vZG9jcy5qYm9zcy5vcmcvYXV0 aG9yL2Rpc3BsYXkvRk9SR0UvQWRkK3lvdXIrUGx1Z2luK3RvK3RoZStDZW50cmFsK1BsdWdpbitJ bmRleCslMjhDUEklMjk8L2E+PGJyPgo8YnI+Q2hlZXJzITxicj5+TGluY29sbjxicj48YnI+PGRp diBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFRodSwgQXByIDEyLCAyMDEyIGF0IDY6NTEgUE0sIErp cultaWUgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86amVyQHByaW50c3RhY2t0 cmFjZS5vcmciPmplckBwcmludHN0YWNrdHJhY2Uub3JnPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxi cj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhl eDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KSGkgZm9yZ2Ug dGVhbSw8YnI+PGJyPkhlcmUgaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgcGx1Z2luIDqgCjxhIGhy ZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qZXJyL3BsdWdpbi1wb3J0bGV0IiB0YXJnZXQ9Il9ibGFu ayI+aHR0cHM6Ly9naXRodWIuY29tL2plcnIvcGx1Z2luLXBvcnRsZXQ8L2E+PGRpdj5Gb3IgdGhl IG5leHQgc3RlcCBJIHdvdWxkIGxpa2UgdG8gYWRkIHRoZSBxdWlja3N0YXJ0IG1vZGUuPC9kaXY+ PGRpdj48YnI+PC9kaXY+PGRpdj5Zb3VyIGNvbW1lbnRzIGFyZSB3ZWxjb21lITwvZGl2Pgo8ZGl2 Pjxicj4KPC9kaXY+PGRpdj5SZWdhcmRzLDwvZGl2PjxkaXY+SmVyZW1pZS48L2Rpdj48ZGl2Pjxk aXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5MZSAyIGF2cmlsIDIwMTIgMjM6MzEsIErp cultaWUgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86amVyQHByaW50c3RhY2t0 cmFjZS5vcmciIHRhcmdldD0iX2JsYW5rIj5qZXJAcHJpbnRzdGFja3RyYWNlLm9yZzwvYT4mZ3Q7 PC9zcGFuPiBhIOljcml0IDo8ZGl2Pgo8ZGl2IGNsYXNzPSJoNSI+PGJyPgo8YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48YnI+VGh4IExpbmNvbG4gYW5kIEtlbiw8 ZGl2Pjxicj48L2Rpdj48ZGl2Pkkgd2lsbCBmb2xsb3cgeW91ciBhZHZpY2UsoEkgaG9wZSB0byBw cm92aWRlIGEgYmV0dGVyIHZlcnNpb24gc29vbi48L2Rpdj48ZGl2PgoKPGJyPjwvZGl2PjxkaXY+ UmVnYXJkcyw8L2Rpdj48ZGl2PkrpcultaWUuPGJyPjxkaXY+PGJyPjwvZGl2PjxkaXY+oDxkaXY+ PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4KTGUgMiBhdnJpbCAyMDEyIDIxOjQ2LCBMaW5j b2xuIEJheHRlciwgSUlJIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmxpbmNv bG5iYXh0ZXJAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+bGluY29sbmJheHRlckBnbWFpbC5j b208L2E+Jmd0Ozwvc3Bhbj4gYSDpY3JpdCA6PGRpdj48ZGl2Pjxicj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHgg I2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgpJIHRoaW5rIHRoaXMgc2hvdWxkIHByb2Jh Ymx5IGJlIGEgc3RhbmRhbG9uZSBwbHVnaW4gZm9yIG5vdywgd2UgY2FuIG1vdmUgaXQgaW50byB0 aGUgY29yZSBsYXRlciBhcyBpdCBtYXR1cmVzITxicj48YnI+R28gYWhlYWQgYW5kIG9wZW4gYSB0 aWNrZXQgaW4gRk9SR0VQTFVHSU5TIGlmIHlvdSB3YW50IG9uZSB0byB0cmFjayB0aGlzLiBIb3Bl ZnVsbHkgd2Ugd2lsbCBoYXZlIG91ciBwbHVnaW4gc2l0ZSB1cCBhbmQgcnVubmluZyBzb29uIHNv IHlvdSB3b24mIzM5O3QgbmVlZCB0byBjcmVhdGUgSklSQXMsIHlvdSYjMzk7bGwganVzdCBjcmVh dGUgYW4gYWNjb3VudCBhbmQgZ2V0IHdyaXRpbmchPGJyPgoKCgo8YnI+TG9va2luZyBmb3J3YXJk IHRvIHNlZWluZyB3aGF0IHlvdSBjb21lIHVwIHdpdGghPGJyPn5MaW5jb2xuPGRpdj48ZGl2Pjxi cj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIE1vbiwgQXByIDIsIDIwMTIgYXQgOToz NSBBTSwgS2VuIEZpbm5pZ2FuIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmtl bkBrZW5maW5uaWdhbi5tZSIgdGFyZ2V0PSJfYmxhbmsiPmtlbkBrZW5maW5uaWdhbi5tZTwvYT4m Z3Q7PC9zcGFuPiB3cm90ZTo8YnI+CgoKCjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIg c3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRp bmctbGVmdDoxZXgiPkhpoDxzcGFuPkrpcultaWUsPC9zcGFuPjxkaXY+PGZvbnQgY29sb3I9IiMy MjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj48YnI+PC9mb250PjwvZGl2PjxkaXY+PGZv bnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5UaGFua3MgZm9yIHB1 dHRpbmcgYW4gaW5pdGlhbCBwb3J0YWwgcGx1Z2luIHRvZ2V0aGVyLiCgSXQgd2FzIHNvbWV0aGlu ZyBvbiBteSBsaXN0IGZvciB0aGUgbW9udGhzIGFoZWFkLCBidXQgeW91IGJlYXQgbWUgdG8gaXQh IDstKTwvZm9udD48L2Rpdj4KCgoKCjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFy aWFsLCBzYW5zLXNlcmlmIj48YnI+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIy MjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5JJiMzOTt2ZSByZXNwb25kZWQgaW4gbGluZSB0 byB5b3VyIHF1ZXN0aW9ucy48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIg ZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYiPjxicj4KCgoKCjwvZm9udD48L2Rpdj48ZGl2Pjxmb250 IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+UmVnYXJkczwvZm9udD48 L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+ S2VuPGJyPjwvZm9udD48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXY+T24gU3VuLCBB cHIgMSwgMjAxMiBhdCAzOjAwIFBNLCBK6XLpbWllIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJl Zj0ibWFpbHRvOmplckBwcmludHN0YWNrdHJhY2Uub3JnIiB0YXJnZXQ9Il9ibGFuayI+amVyQHBy aW50c3RhY2t0cmFjZS5vcmc8L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgoKCgoKPGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+SGkgRm9yZ2UgVGVhbSE8ZGl2Pjxi cj48L2Rpdj48ZGl2Pkkgd291bGQgbGlrZSB0byBjcmVhdGUgYSBwbHVnaW4gdG8gbWFuYWdlIGph dmFlZSBwb3J0bGV0cy48L2Rpdj48ZGl2PkEgZmlyc3QgY29tbWl0IGlzIGF2YWlsYWJsZSBoZXJl oDxhIGhyZWY9Imh0dHA6Ly9nb28uZ2wvT0tnc0ciIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZ29v LmdsL09LZ3NHPC9hPqAuoDwvZGl2PgoKCgoKPGRpdj48YnI+CjwvZGl2PjxkaXY+QmVmb3JlIGdv aW5nIGZ1cnRoZXIgYW5kIGNyZWF0ZSBhIEZvcmdlIEppcmEgdGlja2V0IKBJIHdvdWxkIGFwcHJl Y2lhdGUgeW91ciBvcGluaW9uLjwvZGl2PjxkaXY+oC0gRG8geW91IHRoaW5rIGNvcmUvamF2YWVl LWFwaSBhbmQgY29yZaAvamF2YWVlLWltcGygoGlzIGEgcmlnaHSgcGxhY2Ugb3IgSSBuZWVkIHRv IGNyZWF0ZSBhbiBvdGhlciBwcm9qZWN0PzwvZGl2PgoKCgoKPC9ibG9ja3F1b3RlPjxkaXY+PGJy PjwvZGl2PjwvZGl2PjxkaXY+SSB0aGluayB0aGlzIGlzIHRoZSBjb3JyZWN0IHBsYWNlLCB0aG91 Z2ggTGluY29sbiB3b3VsZCBoYXZlIHRoZSBmaW5hbCBzYXkgb24gdGhhdCA7LSk8L2Rpdj48ZGl2 PjxkaXY+oDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgi PgoKCgoKCjxkaXY+oC0gVGhlIEpCb3NzIFNocmlua3dyYXAgcHJvamVjdKBkb2VzbiYjMzk7dCBj dXJyZW50bHkgaW5jbHVkZSB0aGUgcG9ydGxldC54bWwgZGVzY3JpcHRpb24uIEkgdGhpbmsgaXQm IzM5O3MgaW50ZXJlc3RpbmcgdG8gZG8gdGhhdC4gKEkgY2FuIGNyZWF0ZSBhbiBvdGhlciBKaXJh IHRpY2tldCk8L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGRpdj5CeSBh bGwgbWVhbnMgZ28gYWhlYWQgYW5kIGNyZWF0ZSB0aGUgamlyYSBhbmQgZG8gdGhlIHdvcmsuIKBJ dCB3b3VsZCBiZSBxdWl0ZSBzdHJhaWdodCBmb3J3YXJkIHRvIGNvbXBsZXRlLiCgSSBteXNlbGYg ZGlkIHRoZSBKU0Ygb25lcyBsYXN0IHdlZWssIGFuZCB3YXMgcGxhbm5pbmcgb24gZ2V0dGluZyB0 byBwb3J0YWwgZGVzY3JpcHRvcnMgb3ZlciB0aGUgY29taW5nIHdlZWtzLiCgSXQmIzM5O3MganVz dCBhIGNhc2Ugb2YgYWRkaW5nIHRoZSBuZWNlc3NhcnkgeHNkIGZpbGVzLCBtYWtpbmcgc3VyZSB0 aGUgZ2VuZXJhdGlvbiBwcm9jZXNzIHdvcmtlZCwgYW5kIHdyaXRpbmcgc29tZSB0ZXN0cyB0byB2 ZXJpZnkgaXQuIKBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIGFib3V0IGl0IGRyb3AgYnkgI2pi b3NzdGVzdGluZyBvbiBpcmMgYW5kIHNwZWFrIHdpdGggQW5kcmV3IChBTFIpIHdobyBsZWFkcyB0 aGUgcHJvamVjdC48L2Rpdj4KCgoKPGRpdj4KPGRpdj6gPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9 ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNj Y2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdj6gLSBUaGUgcXVpY2tzdGFydCBvcHRpb24g oHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHB1c2ggdGhlIGdlbmVyYXRlZCBjb2RlIGluIGEgR2F0 ZUluIGluc3RhbmNlIChub3QgaW1wbGVtZW50ZWQgeWV0KS48L2Rpdj4KCgoKCjwvYmxvY2txdW90 ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PllvdSBjb3VsZCBjZXJ0YWlubHkgZG8gYSBkZXBs b3kgb2YgdGhlIHBvcnRsZXQgdG8gR2F0ZUluLCBvciBhbnkgb3RoZXIgcG9ydGFsLCBidXQgSSB0 aGluayBpdCBtYWtlcyBzZW5zZSBmb3IgdGhhdCB0byBiZSBhIHNlcGFyYXRlIGNvbmNlcm4gZnJv bSBjcmVhdGluZyBhIHBvcnRsZXQgYW5kIGl0JiMzOTtzIGRlc2NyaXB0b3JzLiCgVGhhdCBpcyBo b3cgYSBsb3Qgb2YgdGhlIG90aGVyIHBsdWdpbnMgd29yaywgYW5kIGFsc28gYmVjYXVzZSB0aGUg ZGVwbG95bWVudCB3b3VsZCBiZSBzcGVjaWZpYyB0byBHYXRlSW4sIGFuZCBpdCB3b3VsZCBiZSBt ZXNzeSB0byBoYXZlIGEgcGx1Z2luIHRoYXQgZGVhbHMgd2l0aCBkZXNjcmlwdG9yIGdlbmVyYXRp b24gYW5kIGRlcGxveWluZyB0byBkaWZmZXJlbnQgcG9ydGFsIGNvbnRhaW5lcnMuPC9kaXY+CgoK CjxkaXY+CjxkaXY+oDwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPgo8ZGl2PqAtoENvbW1hbmQgbmFtZXMgYW5kIG9wdGlvbnMgYXJlIGNvcnJlY3Q/PC9k aXY+PGRpdj5UaGFua3MgZm9yIHlvdXIgY29tbWVudHMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp dj5Gb3Igbm93IGhlcmUmIzM5O3Mgd2hhdCB5b3UgY2FuIGRvOqA8L2Rpdj48ZGl2PqAkIHBvcnRs ZXQgc2V0dXA8L2Rpdj48L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3Rl IiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFk ZGluZy1sZWZ0OjFleCI+CgoKCgo8ZGl2PqAkoHBvcnRsZXQgYWRkIC0tbmFtZWQgaGVsbG9wb3J0 bGV0IC0tdGl0bGUgJnF1b3Q7TXkgZm9yZ2UgcG9ydGxldCZxdW90OyAtLXNob3J0LXRpdGxlIEZv cmdlUG9ydGxldCAtLWtleXdvcmRzICZxdW90O2RlbW8sZm9yZ2UscG9ydGxldCZxdW90OzwvZGl2 PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2Pk1pZ2h0IG1ha2UgaXQgY2xl YXJlciBmb3IgY29tbWFuZCB0byBiZSBjYWxsZWQgJnF1b3Q7bmV3LXBvcnRsZXQmcXVvdDsgaW5z dGVhZCBvZiAmcXVvdDthZGQmcXVvdDs8L2Rpdj4KCgoKPGRpdj4KPGRpdj6gPC9kaXY+PGJsb2Nr cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVy LWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjxkaXY+oCQgcG9ydGxldCBh ZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNl cy5kZWZhdWx0Vmlld0lkLnZpZXcgLS12YWx1ZSAmcXVvdDsvaG9tZS54aHRtbCZxdW90OzwvZGl2 PjxkaXY+oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUg amF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLmVkaXQgLS12YWx1ZSAmcXVvdDsvZWRp dC54aHRtbCZxdW90OzwvZGl2PgoKCgoKCjxkaXY+oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0 bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lk LmhlbHAgLS12YWx1ZSAmcXVvdDsvaGVscC54aHRtbCZxdW90OzwvZGl2PjwvYmxvY2txdW90ZT48 ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PkNvdWxkIGJlIG5pY2UgdG8gaGF2ZSB0aGUgJnF1b3Q7 bmV3LXBvcnRsZXQmcXVvdDsgY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGVzZSBwYXJh bWV0ZXJzIHdpdGggdGhlIGRlZmF1bHQgdmFsdWVzIHlvdSBzcGVjaWZ5IGFib3ZlLCBhcyB3aXRo b3V0IHRoZW0gYSBwb3J0bGV0IHdvbiYjMzk7dCBkZXBsb3kgc3VjY2Vzc2Z1bGx5LiCgSnVzdCBh cyB5b3UgaGF2ZSB3aXRoIHRoZSBkZWZhdWx0IHBvcnRsZXQgbW9kZXMgdGhhdCBhcmUgZGVmaW5l ZC48L2Rpdj4KCgoKCjxkaXY+oDwvZGl2PjxkaXY+SXQgd291bGQgYWxzbyBiZSBuaWNlIHRvIGhh dmUgYWxpYXNlZCBhZGQtcGFyYW0gdmVyc2lvbnMgZm9yIHNwZWNpZmljYWxseSBhZGRpbmcgYSB2 aWV3LCBlZGl0IGFuZCBoZWxwIHZpZXdJZC4goEl0JiMzOTtzIHByZXR0eSBvbmVyb3VzIHRvIGZv cmNlIHNvbWVvbmUgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IHN5bnRheCBvZiBqYXZheC5wb3J0bGV0 LmZhY2VzLmRlZmF1bHRWaWV3SWQuKiBldmVyeSB0aW1lIHRoZXkgd2FudCB0byBhZGQgb3IgbW9k aWZ5IHdoYXQgdmlld0lkIGVhY2ggb2YgdGhvc2UgcG9ydGxldCBtb2RlcyBwb2ludHMgYXQuPC9k aXY+CgoKCgo8ZGl2Pjxicj48L2Rpdj48ZGl2PlNvIHlvdSBjb3VsZCBoYXZlIHNvbWV0aGluZyBs aWtlOjwvZGl2PjxkaXY+JCBwb3J0bGV0IHNldC12aWV3LWlkIC0tcG9ydGxldCBoZWxsb3BvcnRs ZXQgLS12aWV3ICZxdW90Oy9ob21lLmh0bWwmcXVvdDs8L2Rpdj48ZGl2PjxkaXY+JCBwb3J0bGV0 IHNldC1lZGl0LWlkIC0tcG9ydGxldCBoZWxsb3BvcnRsZXQgLS12aWV3ICZxdW90Oy9lZGl0Lmh0 bWwmcXVvdDs8L2Rpdj4KCgoKCjwvZGl2PjxkaXY+PGRpdj4kIHBvcnRsZXQgc2V0LWhlbHAtaWQg LS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLXZpZXcgJnF1b3Q7L2hlbHAuaHRtbCZxdW90OzwvZGl2 PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YW5kIHRoZW4gaW50ZXJuYWxseSBpdCBhY3R1YWxs eSBjYWxscyBhZGQtcGFyYW0gd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGFwcHJvcHJpYXRlIHBh cmFtIG5hbWUuPC9kaXY+CgoKCgo8ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21h aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PjxkaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbmQg dGhlIHJlc3VsdCBpcyA6CjwvZGl2PjxkaXY+c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvcG9ydGxl dC54bWw8L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPC9kaXY+PGRpdj48ZGl2PjxkaXY+Jmx0Oz94bWwgdmVyc2lvbj0mcXVvdDsx LjAmcXVvdDsgZW5jb2Rpbmc9JnF1b3Q7VVRGLTgmcXVvdDsgc3RhbmRhbG9uZT0mcXVvdDtubyZx dW90Oz8mZ3Q7PC9kaXY+CgoKCgoKPGRpdj4mbHQ7cG9ydGxldC1hcHAgeG1sbnM9JnF1b3Q7PGEg aHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAu eHNkIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9w b3J0bGV0LWFwcF8yXzAueHNkPC9hPiZxdW90OyB4bWxuczp4c2k9JnF1b3Q7PGEgaHJlZj0iaHR0 cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHRhcmdldD0iX2JsYW5rIj5o dHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZTwvYT4mcXVvdDsgdmVyc2lv bj0mcXVvdDsyLjAmcXVvdDsgeHNpOnNjaGVtYUxvY2F0aW9uPSZxdW90OzxhIGhyZWY9Imh0dHA6 Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMl8wLnhzZCIgdGFyZ2V0 PSJfYmxhbmsiPmh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBf Ml8wLnhzZDwvYT4mcXVvdDsmZ3Q7PC9kaXY+CgoKCgoKPGRpdj6gICZsdDtwb3J0bGV0Jmd0Ozwv ZGl2PjxkaXY+oCCgICZsdDtwb3J0bGV0LW5hbWUmZ3Q7aGVsbG9wb3J0bGV0Jmx0Oy9wb3J0bGV0 LW5hbWUmZ3Q7PC9kaXY+PGRpdj6gIKAgJmx0O3BvcnRsZXQtY2xhc3MmZ3Q7amF2YXgucG9ydGxl dC5mYWNlcy5HZW5lcmljRmFjZXNQb3J0bGV0Jmx0Oy9wb3J0bGV0LWNsYXNzJmd0OzwvZGl2Pjxk aXY+oCCgICZsdDtzdXBwb3J0cyZndDs8L2Rpdj4KCgoKCgo8ZGl2PqAgoCCgICZsdDttaW1lLXR5 cGUmZ3Q7dGV4dC9odG1sJmx0Oy9taW1lLXR5cGUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7cG9y dGxldC1tb2RlJmd0O0VESVQmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj48ZGl2PqAgoCCgICZs dDtwb3J0bGV0LW1vZGUmZ3Q7SEVMUCZsdDsvcG9ydGxldC1tb2RlJmd0OzwvZGl2PjxkaXY+oCCg IKAgJmx0O3BvcnRsZXQtbW9kZSZndDtWSUVXJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+CgoK CgoKPGRpdj6gIKAgJmx0Oy9zdXBwb3J0cyZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7cG9ydGxldC1p bmZvJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O3RpdGxlJmd0O015IGZvcmdlIHBvcnRsZXQmbHQ7 L3RpdGxlJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O3Nob3J0LXRpdGxlJmd0O0ZvcmdlUG9ydGxl dCZsdDsvc2hvcnQtdGl0bGUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7a2V5d29yZHMmZ3Q7ZGVt byxmb3JnZSxwb3J0bGV0Jmx0Oy9rZXl3b3JkcyZndDs8L2Rpdj4KCgoKCgo8ZGl2PqAgoCAmbHQ7 L3BvcnRsZXQtaW5mbyZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7aW5pdC1wYXJhbSZndDs8L2Rpdj48 ZGl2PqAgoCCgICZsdDtuYW1lJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC52 aWV3Jmx0Oy9uYW1lJmd0OzwvZGl2PjxkaXY+oCCgIKAgJmx0O3ZhbHVlJmd0Oy9ob21lLnhodG1s Jmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PqAgoCAmbHQ7L2luaXQtcGFyYW0mZ3Q7PC9kaXY+CgoK CgoKPGRpdj6gIKAgJmx0O2luaXQtcGFyYW0mZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7bmFtZSZn dDtqYXZheC5wb3J0bGV0LmZhY2VzLmRlZmF1bHRWaWV3SWQuZWRpdCZsdDsvbmFtZSZndDs8L2Rp dj48ZGl2PqAgoCCgICZsdDt2YWx1ZSZndDsvZWRpdC54aHRtbCZsdDsvdmFsdWUmZ3Q7PC9kaXY+ PGRpdj6gIKAgJmx0Oy9pbml0LXBhcmFtJmd0OzwvZGl2PjxkaXY+oCCgICZsdDtpbml0LXBhcmFt Jmd0OzwvZGl2PgoKCgoKCjxkaXY+oCCgIKAgJmx0O25hbWUmZ3Q7amF2YXgucG9ydGxldC5mYWNl cy5kZWZhdWx0Vmlld0lkLmhlbHAmbHQ7L25hbWUmZ3Q7PC9kaXY+PGRpdj6gIKAgoCAmbHQ7dmFs dWUmZ3Q7L2hlbHAueGh0bWwmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+oCCgICZsdDsvaW5pdC1w YXJhbSZndDs8L2Rpdj48ZGl2PqAgJmx0Oy9wb3J0bGV0Jmd0OzwvZGl2PjxkaXY+Jmx0Oy9wb3J0 bGV0LWFwcCZndDs8L2Rpdj4KCgoKCgo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2Pjxi cj48L2Rpdj48ZGl2PlJlZ2Fkcyw8L2Rpdj48ZGl2PkrpcultaWUuPC9kaXY+Cjxicj48L2Rpdj48 L2Rpdj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4K Zm9yZ2UtZGV2IG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOmZvcmdlLWRldkBsaXN0 cy5qYm9zcy5vcmciIHRhcmdldD0iX2JsYW5rIj5mb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnPC9h Pjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9m b3JnZS1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZvcmdlLWRldjwvYT48YnI+Cjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwv ZGl2Pgo8YnI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188 YnI+CmZvcmdlLWRldiBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpmb3JnZS1kZXZA bGlzdHMuamJvc3Mub3JnIiB0YXJnZXQ9Il9ibGFuayI+Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9y ZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGlu Zm8vZm9yZ2UtZGV2IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFp bG1hbi9saXN0aW5mby9mb3JnZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxi cj48YnIgY2xlYXI9ImFsbCI+PGJyPjwvZGl2PjwvZGl2PjxzcGFuPjxmb250IGNvbG9yPSIjODg4 ODg4Ij4tLSA8YnI+TGluY29sbiBCYXh0ZXIsIElJSTxicj48YSBocmVmPSJodHRwOi8vb2Nwc29m dC5vcmciIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vb2Nwc29mdC5vcmc8L2E+PGJyPiZxdW90O1Np bXBsZXIgaXMgYmV0dGVyLiZxdW90Ozxicj4KCgoKPC9mb250Pjwvc3Bhbj48YnI+X19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CmZvcmdlLWRldiBtYWls aW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpmb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnIiB0 YXJnZXQ9Il9ibGFuayI+Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhyZWY9 Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0YXJn ZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3Jn ZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48L2Rp dj48L2Rpdj48L2Rpdj4KPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48L2Rpdj48 L2Rpdj4KPGJyPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f PGJyPgpmb3JnZS1kZXYgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2 QGxpc3RzLmpib3NzLm9yZyI+Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhy ZWY9Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0 YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9m b3JnZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48YnIgY2xlYXI9ImFs bCI+PGJyPi0tIDxicj5MaW5jb2xuIEJheHRlciwgSUlJPGJyPjxhIGhyZWY9Imh0dHA6Ly9vY3Bz b2Z0Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9vY3Bzb2Z0Lm9yZzwvYT48YnI+JnF1b3Q7 U2ltcGxlciBpcyBiZXR0ZXIuJnF1b3Q7PGJyPgo= --===============7462320330340493423==-- From jer at printstacktrace.org Mon Apr 16 06:03:16 2012 Content-Type: multipart/mixed; boundary="===============7875669910529767573==" MIME-Version: 1.0 From: =?utf-8?q?J=C3=A9r=C3=A9mie_=3Cjer_at_printstacktrace=2Eorg=3E?= To: forge-dev at lists.jboss.org Subject: Re: [forge-dev] Questions about a new javaee portlet plugin Date: Mon, 16 Apr 2012 12:03:11 +0200 Message-ID: In-Reply-To: CAEp_U4F8xx3foQaWQXB9g18eMRjPU0p6COtYg+VL_knrCEuPow@mail.gmail.com --===============7875669910529767573== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Lincoln I'm preparing a version with a quick start and a demo to complete the README file. But, I leave for two weeks without computer and internet (trekking time). I will finalize it when I'm back. Regards, Jeremie. Le 13 avril 2012 18:12, Lincoln Baxter, III a =C3=A9crit : > Hey J=C3=A9r=C3=A9mie! > > Could you perhaps put a few comments on how to use this plugin in the > README? I'd love to give it a try :) Also, when you are ready, feel free = to > add this to the Central Plugin Index: > https://docs.jboss.org/author/display/FORGE/Add+your+Plugin+to+the+Centra= l+Plugin+Index+%28CPI%29 > > Cheers! > ~Lincoln > > > On Thu, Apr 12, 2012 at 6:51 PM, J=C3=A9r=C3=A9mie wrote: > >> Hi forge team, >> >> Here is a new version of the plugin : >> https://github.com/jerr/plugin-portlet >> For the next step I would like to add the quickstart mode. >> >> Your comments are welcome! >> >> Regards, >> Jeremie. >> >> Le 2 avril 2012 23:31, J=C3=A9r=C3=A9mie a = =C3=A9crit : >> >> >>> Thx Lincoln and Ken, >>> >>> I will follow your advice, I hope to provide a better version soon. >>> >>> Regards, >>> J=C3=A9r=C3=A9mie. >>> >>> >>> >>> Le 2 avril 2012 21:46, Lincoln Baxter, III a >>> =C3=A9crit : >>> >>> I think this should probably be a standalone plugin for now, we can move >>>> it into the core later as it matures! >>>> >>>> Go ahead and open a ticket in FORGEPLUGINS if you want one to track >>>> this. Hopefully we will have our plugin site up and running soon so you >>>> won't need to create JIRAs, you'll just create an account and get writ= ing! >>>> >>>> Looking forward to seeing what you come up with! >>>> ~Lincoln >>>> >>>> >>>> On Mon, Apr 2, 2012 at 9:35 AM, Ken Finnigan wro= te: >>>> >>>>> Hi J=C3=A9r=C3=A9mie, >>>>> >>>>> Thanks for putting an initial portal plugin together. It was >>>>> something on my list for the months ahead, but you beat me to it! ;-) >>>>> >>>>> I've responded in line to your questions. >>>>> >>>>> Regards >>>>> Ken >>>>> >>>>> On Sun, Apr 1, 2012 at 3:00 PM, J=C3=A9r=C3=A9mie wrote: >>>>> >>>>>> Hi Forge Team! >>>>>> >>>>>> I would like to create a plugin to manage javaee portlets. >>>>>> A first commit is available here http://goo.gl/OKgsG . >>>>>> >>>>>> Before going further and create a Forge Jira ticket I would >>>>>> appreciate your opinion. >>>>>> - Do you think core/javaee-api and core /javaee-impl is a >>>>>> right place or I need to create an other project? >>>>>> >>>>> >>>>> I think this is the correct place, though Lincoln would have the final >>>>> say on that ;-) >>>>> >>>>> >>>>>> - The JBoss Shrinkwrap project doesn't currently include the >>>>>> portlet.xml description. I think it's interesting to do that. (I can= create >>>>>> an other Jira ticket) >>>>>> >>>>> >>>>> By all means go ahead and create the jira and do the work. It would >>>>> be quite straight forward to complete. I myself did the JSF ones last >>>>> week, and was planning on getting to portal descriptors over the comi= ng >>>>> weeks. It's just a case of adding the necessary xsd files, making su= re the >>>>> generation process worked, and writing some tests to verify it. If y= ou >>>>> have any questions about it drop by #jbosstesting on irc and speak wi= th >>>>> Andrew (ALR) who leads the project. >>>>> >>>>> >>>>>> - The quickstart option would be interesting to push the generated >>>>>> code in a GateIn instance (not implemented yet). >>>>>> >>>>> >>>>> You could certainly do a deploy of the portlet to GateIn, or any other >>>>> portal, but I think it makes sense for that to be a separate concern = from >>>>> creating a portlet and it's descriptors. That is how a lot of the ot= her >>>>> plugins work, and also because the deployment would be specific to Ga= teIn, >>>>> and it would be messy to have a plugin that deals with descriptor >>>>> generation and deploying to different portal containers. >>>>> >>>>> >>>>>> - Command names and options are correct? >>>>>> Thanks for your comments. >>>>>> >>>>>> For now here's what you can do: >>>>>> $ portlet setup >>>>>> >>>>> $ portlet add --named helloportlet --title "My forge portlet" >>>>>> --short-title ForgePortlet --keywords "demo,forge,portlet" >>>>>> >>>>> >>>>> Might make it clearer for command to be called "new-portlet" instead >>>>> of "add" >>>>> >>>>> >>>>>> $ portlet add-param --portlet helloportlet --name >>>>>> javax.portlet.faces.defaultViewId.view --value "/home.xhtml" >>>>>> $ portlet add-param --portlet helloportlet --name >>>>>> javax.portlet.faces.defaultViewId.edit --value "/edit.xhtml" >>>>>> $ portlet add-param --portlet helloportlet --name >>>>>> javax.portlet.faces.defaultViewId.help --value "/help.xhtml" >>>>>> >>>>> >>>>> Could be nice to have the "new-portlet" command automatically create >>>>> these parameters with the default values you specify above, as withou= t them >>>>> a portlet won't deploy successfully. Just as you have with the defau= lt >>>>> portlet modes that are defined. >>>>> >>>>> It would also be nice to have aliased add-param versions for >>>>> specifically adding a view, edit and help viewId. It's pretty onerou= s to >>>>> force someone to remember the exact syntax of >>>>> javax.portlet.faces.defaultViewId.* every time they want to add or mo= dify >>>>> what viewId each of those portlet modes points at. >>>>> >>>>> So you could have something like: >>>>> $ portlet set-view-id --portlet helloportlet --view "/home.html" >>>>> $ portlet set-edit-id --portlet helloportlet --view "/edit.html" >>>>> $ portlet set-help-id --portlet helloportlet --view "/help.html" >>>>> >>>>> and then internally it actually calls add-param with the addition of >>>>> the appropriate param name. >>>>> >>>>> >>>>>> And the result is : >>>>>> src/main/webapp/WEB-INF/portlet.xml >>>>>> ----------------------------------------------------- >>>>>> >>>>>> >>>>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi=3D" >>>>>> http://www.w3.org/2001/XMLSchema-instance" version=3D"2.0" >>>>>> xsi:schemaLocation=3D" >>>>>> http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"> >>>>>> >>>>>> helloportlet >>>>>> >>>>>> javax.portlet.faces.GenericFacesPortlet >>>>>> >>>>>> text/html >>>>>> EDIT >>>>>> HELP >>>>>> VIEW >>>>>> >>>>>> >>>>>> My forge portlet >>>>>> ForgePortlet >>>>>> demo,forge,portlet >>>>>> >>>>>> >>>>>> javax.portlet.faces.defaultViewId.view >>>>>> /home.xhtml >>>>>> >>>>>> >>>>>> javax.portlet.faces.defaultViewId.edit >>>>>> /edit.xhtml >>>>>> >>>>>> >>>>>> javax.portlet.faces.defaultViewId.help >>>>>> /help.xhtml >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Regads, >>>>>> J=C3=A9r=C3=A9mie. >>>>>> >>>>>> _______________________________________________ >>>>>> forge-dev mailing list >>>>>> forge-dev(a)lists.jboss.org >>>>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> forge-dev mailing list >>>>> forge-dev(a)lists.jboss.org >>>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Lincoln Baxter, III >>>> http://ocpsoft.org >>>> "Simpler is better." >>>> >>>> _______________________________________________ >>>> forge-dev mailing list >>>> forge-dev(a)lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/forge-dev >>>> >>>> >>> >> >> _______________________________________________ >> forge-dev mailing list >> forge-dev(a)lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/forge-dev >> >> > > > -- > Lincoln Baxter, III > http://ocpsoft.org > "Simpler is better." > > _______________________________________________ > forge-dev mailing list > forge-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/forge-dev > > --===============7875669910529767573== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdj5IaSBMaW5jb2xuPC9kaXY+PGJyPkkmIzM5O20gcHJlcGFyaW5nIGEgdmVyc2lvbiB3aXRo IGEgcXVpY2sgc3RhcnQgYW5kIGEgZGVtbyB0byBjb21wbGV0ZSB0aGUgUkVBRE1FIGZpbGUuIEJ1 dCwgSSBsZWF2ZSBmb3IgdHdvIHdlZWtzIHdpdGhvdXQgY29tcHV0ZXIgYW5kIGludGVybmV0ICh0 cmVra2luZyB0aW1lKS4gSSB3aWxsIGZpbmFsaXplIGl0IHdoZW4gSSYjMzk7bSBiYWNrLjxkaXY+ Cjxicj48L2Rpdj48ZGl2PlJlZ2FyZHMsPC9kaXY+PGRpdj5KZXJlbWllLjwvZGl2PjxkaXY+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5MZSAxMyBhdnJpbCAyMDEyIDE4OjEyLCBMaW5jb2xu IEJheHRlciwgSUlJIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmxpbmNvbG5i YXh0ZXJAZ21haWwuY29tIj5saW5jb2xuYmF4dGVyQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiBh IMOpY3JpdCA6PGJyPgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJn aW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4 Ij5IZXkgSsOpcsOpbWllITxicj48YnI+Q291bGQgeW91IHBlcmhhcHMgcHV0IGEgZmV3IGNvbW1l bnRzIG9uIGhvdyB0byB1c2UgdGhpcyBwbHVnaW4gaW4gdGhlIFJFQURNRT8gSSYjMzk7ZCBsb3Zl IHRvIGdpdmUgaXQgYSB0cnkgOikgQWxzbywgd2hlbiB5b3UgYXJlIHJlYWR5LCBmZWVsIGZyZWUg dG8gYWRkIHRoaXMgdG8gdGhlIENlbnRyYWwgUGx1Z2luIEluZGV4OiA8YSBocmVmPSJodHRwczov L2RvY3MuamJvc3Mub3JnL2F1dGhvci9kaXNwbGF5L0ZPUkdFL0FkZCt5b3VyK1BsdWdpbit0byt0 aGUrQ2VudHJhbCtQbHVnaW4rSW5kZXgrJTI4Q1BJJTI5IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6 Ly9kb2NzLmpib3NzLm9yZy9hdXRob3IvZGlzcGxheS9GT1JHRS9BZGQreW91citQbHVnaW4rdG8r dGhlK0NlbnRyYWwrUGx1Z2luK0luZGV4KyUyOENQSSUyOTwvYT48YnI+Cgo8YnI+Q2hlZXJzITxz cGFuIGNsYXNzPSJIT0VuWmIiPjxmb250IGNvbG9yPSIjODg4ODg4Ij48YnI+fkxpbmNvbG48L2Zv bnQ+PC9zcGFuPjxkaXYgY2xhc3M9IkhPRW5aYiI+PGRpdiBjbGFzcz0iaDUiPjxicj48YnI+PGRp diBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFRodSwgQXByIDEyLCAyMDEyIGF0IDY6NTEgUE0sIErD qXLDqW1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpqZXJAcHJpbnRzdGFj a3RyYWNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmplckBwcmludHN0YWNrdHJhY2Uub3JnPC9hPiZn dDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+CkhpIGZvcmdlIHRlYW0sPGJyPjxicj5IZXJlIGlzIGEgbmV3IHZlcnNpb24gb2Yg dGhlIHBsdWdpbiA6wqAKPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plcnIvcGx1Z2luLXBv cnRsZXQiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vamVyci9wbHVnaW4tcG9y dGxldDwvYT48ZGl2PkZvciB0aGUgbmV4dCBzdGVwIEkgd291bGQgbGlrZSB0byBhZGQgdGhlIHF1 aWNrc3RhcnQgbW9kZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PllvdXIgY29tbWVudHMgYXJl IHdlbGNvbWUhPC9kaXY+Cgo8ZGl2Pjxicj4KPC9kaXY+PGRpdj5SZWdhcmRzLDwvZGl2PjxkaXY+ SmVyZW1pZS48L2Rpdj48ZGl2PjxkaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5MZSAy IGF2cmlsIDIwMTIgMjM6MzEsIErDqXLDqW1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9 Im1haWx0bzpqZXJAcHJpbnRzdGFja3RyYWNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmplckBwcmlu dHN0YWNrdHJhY2Uub3JnPC9hPiZndDs8L3NwYW4+IGEgw6ljcml0IDo8ZGl2PgoKPGRpdj48YnI+ CjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4 O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxicj5UaHggTGlu Y29sbiBhbmQgS2VuLDxkaXY+PGJyPjwvZGl2PjxkaXY+SSB3aWxsIGZvbGxvdyB5b3VyIGFkdmlj ZSzCoEkgaG9wZSB0byBwcm92aWRlIGEgYmV0dGVyIHZlcnNpb24gc29vbi48L2Rpdj48ZGl2PgoK Cjxicj48L2Rpdj48ZGl2PlJlZ2FyZHMsPC9kaXY+PGRpdj5Kw6lyw6ltaWUuPGJyPjxkaXY+PGJy PjwvZGl2PjxkaXY+wqA8ZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+CkxlIDIgYXZy aWwgMjAxMiAyMTo0NiwgTGluY29sbiBCYXh0ZXIsIElJSSA8c3BhbiBkaXI9Imx0ciI+Jmx0Ozxh IGhyZWY9Im1haWx0bzpsaW5jb2xuYmF4dGVyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmxp bmNvbG5iYXh0ZXJAZ21haWwuY29tPC9hPiZndDs8L3NwYW4+IGEgw6ljcml0IDo8ZGl2PjxkaXY+ PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAu OGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgoKCgpJIHRo aW5rIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGEgc3RhbmRhbG9uZSBwbHVnaW4gZm9yIG5vdywg d2UgY2FuIG1vdmUgaXQgaW50byB0aGUgY29yZSBsYXRlciBhcyBpdCBtYXR1cmVzITxicj48YnI+ R28gYWhlYWQgYW5kIG9wZW4gYSB0aWNrZXQgaW4gRk9SR0VQTFVHSU5TIGlmIHlvdSB3YW50IG9u ZSB0byB0cmFjayB0aGlzLiBIb3BlZnVsbHkgd2Ugd2lsbCBoYXZlIG91ciBwbHVnaW4gc2l0ZSB1 cCBhbmQgcnVubmluZyBzb29uIHNvIHlvdSB3b24mIzM5O3QgbmVlZCB0byBjcmVhdGUgSklSQXMs IHlvdSYjMzk7bGwganVzdCBjcmVhdGUgYW4gYWNjb3VudCBhbmQgZ2V0IHdyaXRpbmchPGJyPgoK CgoKPGJyPkxvb2tpbmcgZm9yd2FyZCB0byBzZWVpbmcgd2hhdCB5b3UgY29tZSB1cCB3aXRoITxi cj5+TGluY29sbjxkaXY+PGRpdj48YnI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBN b24sIEFwciAyLCAyMDEyIGF0IDk6MzUgQU0sIEtlbiBGaW5uaWdhbiA8c3BhbiBkaXI9Imx0ciI+ Jmx0OzxhIGhyZWY9Im1haWx0bzprZW5Aa2VuZmlubmlnYW4ubWUiIHRhcmdldD0iX2JsYW5rIj5r ZW5Aa2VuZmlubmlnYW4ubWU8L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgoKCgoKPGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+SGnCoDxzcGFuPkrDqXLDqW1pZSw8 L3NwYW4+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWwsIHNhbnMtc2VyaWYi Pjxicj48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzIyMjIyMiIgZmFjZT0iYXJpYWws IHNhbnMtc2VyaWYiPlRoYW5rcyBmb3IgcHV0dGluZyBhbiBpbml0aWFsIHBvcnRhbCBwbHVnaW4g dG9nZXRoZXIuIMKgSXQgd2FzIHNvbWV0aGluZyBvbiBteSBsaXN0IGZvciB0aGUgbW9udGhzIGFo ZWFkLCBidXQgeW91IGJlYXQgbWUgdG8gaXQhIDstKTwvZm9udD48L2Rpdj4KCgoKCgo8ZGl2Pjxm b250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+PGJyPjwvZm9udD48 L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMjIyMjIyIiBmYWNlPSJhcmlhbCwgc2Fucy1zZXJpZiI+ SSYjMzk7dmUgcmVzcG9uZGVkIGluIGxpbmUgdG8geW91ciBxdWVzdGlvbnMuPC9mb250PjwvZGl2 PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj48YnI+ CgoKCgoKPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIyMjIiIGZhY2U9ImFyaWFs LCBzYW5zLXNlcmlmIj5SZWdhcmRzPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMyMjIy MjIiIGZhY2U9ImFyaWFsLCBzYW5zLXNlcmlmIj5LZW48YnI+PC9mb250Pjxicj48ZGl2IGNsYXNz PSJnbWFpbF9xdW90ZSI+PGRpdj5PbiBTdW4sIEFwciAxLCAyMDEyIGF0IDM6MDAgUE0sIErDqXLD qW1pZSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpqZXJAcHJpbnRzdGFja3Ry YWNlLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmplckBwcmludHN0YWNrdHJhY2Uub3JnPC9hPiZndDs8 L3NwYW4+IHdyb3RlOjxicj4KCgoKCgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0 eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5n LWxlZnQ6MWV4Ij5IaSBGb3JnZSBUZWFtITxkaXY+PGJyPjwvZGl2PjxkaXY+SSB3b3VsZCBsaWtl IHRvIGNyZWF0ZSBhIHBsdWdpbiB0byBtYW5hZ2UgamF2YWVlIHBvcnRsZXRzLjwvZGl2PjxkaXY+ QSBmaXJzdCBjb21taXQgaXMgYXZhaWxhYmxlIGhlcmXCoDxhIGhyZWY9Imh0dHA6Ly9nb28uZ2wv T0tnc0ciIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZ29vLmdsL09LZ3NHPC9hPsKgLsKgPC9kaXY+ CgoKCgoKPGRpdj48YnI+CjwvZGl2PjxkaXY+QmVmb3JlIGdvaW5nIGZ1cnRoZXIgYW5kIGNyZWF0 ZSBhIEZvcmdlIEppcmEgdGlja2V0IMKgSSB3b3VsZCBhcHByZWNpYXRlIHlvdXIgb3Bpbmlvbi48 L2Rpdj48ZGl2PsKgLSBEbyB5b3UgdGhpbmsgY29yZS9qYXZhZWUtYXBpIGFuZCBjb3JlwqAvamF2 YWVlLWltcGzCoMKgaXMgYSByaWdodMKgcGxhY2Ugb3IgSSBuZWVkIHRvIGNyZWF0ZSBhbiBvdGhl ciBwcm9qZWN0PzwvZGl2PgoKCgoKCjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48 ZGl2PkkgdGhpbmsgdGhpcyBpcyB0aGUgY29ycmVjdCBwbGFjZSwgdGhvdWdoIExpbmNvbG4gd291 bGQgaGF2ZSB0aGUgZmluYWwgc2F5IG9uIHRoYXQgOy0pPC9kaXY+PGRpdj48ZGl2PsKgPC9kaXY+ PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7 Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CgoKCgoKCjxkaXY+ wqAtIFRoZSBKQm9zcyBTaHJpbmt3cmFwIHByb2plY3TCoGRvZXNuJiMzOTt0IGN1cnJlbnRseSBp bmNsdWRlIHRoZSBwb3J0bGV0LnhtbCBkZXNjcmlwdGlvbi4gSSB0aGluayBpdCYjMzk7cyBpbnRl cmVzdGluZyB0byBkbyB0aGF0LiAoSSBjYW4gY3JlYXRlIGFuIG90aGVyIEppcmEgdGlja2V0KTwv ZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PkJ5IGFsbCBtZWFucyBn byBhaGVhZCBhbmQgY3JlYXRlIHRoZSBqaXJhIGFuZCBkbyB0aGUgd29yay4gwqBJdCB3b3VsZCBi ZSBxdWl0ZSBzdHJhaWdodCBmb3J3YXJkIHRvIGNvbXBsZXRlLiDCoEkgbXlzZWxmIGRpZCB0aGUg SlNGIG9uZXMgbGFzdCB3ZWVrLCBhbmQgd2FzIHBsYW5uaW5nIG9uIGdldHRpbmcgdG8gcG9ydGFs IGRlc2NyaXB0b3JzIG92ZXIgdGhlIGNvbWluZyB3ZWVrcy4gwqBJdCYjMzk7cyBqdXN0IGEgY2Fz ZSBvZiBhZGRpbmcgdGhlIG5lY2Vzc2FyeSB4c2QgZmlsZXMsIG1ha2luZyBzdXJlIHRoZSBnZW5l cmF0aW9uIHByb2Nlc3Mgd29ya2VkLCBhbmQgd3JpdGluZyBzb21lIHRlc3RzIHRvIHZlcmlmeSBp dC4gwqBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIGFib3V0IGl0IGRyb3AgYnkgI2pib3NzdGVz dGluZyBvbiBpcmMgYW5kIHNwZWFrIHdpdGggQW5kcmV3IChBTFIpIHdobyBsZWFkcyB0aGUgcHJv amVjdC48L2Rpdj4KCgoKCjxkaXY+CjxkaXY+wqA8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21h aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PsKgLSBUaGUgcXVpY2tzdGFydCBvcHRpb24gwqB3 b3VsZCBiZSBpbnRlcmVzdGluZyB0byBwdXNoIHRoZSBnZW5lcmF0ZWQgY29kZSBpbiBhIEdhdGVJ biBpbnN0YW5jZSAobm90IGltcGxlbWVudGVkIHlldCkuPC9kaXY+CgoKCgoKPC9ibG9ja3F1b3Rl PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+WW91IGNvdWxkIGNlcnRhaW5seSBkbyBhIGRlcGxv eSBvZiB0aGUgcG9ydGxldCB0byBHYXRlSW4sIG9yIGFueSBvdGhlciBwb3J0YWwsIGJ1dCBJIHRo aW5rIGl0IG1ha2VzIHNlbnNlIGZvciB0aGF0IHRvIGJlIGEgc2VwYXJhdGUgY29uY2VybiBmcm9t IGNyZWF0aW5nIGEgcG9ydGxldCBhbmQgaXQmIzM5O3MgZGVzY3JpcHRvcnMuIMKgVGhhdCBpcyBo b3cgYSBsb3Qgb2YgdGhlIG90aGVyIHBsdWdpbnMgd29yaywgYW5kIGFsc28gYmVjYXVzZSB0aGUg ZGVwbG95bWVudCB3b3VsZCBiZSBzcGVjaWZpYyB0byBHYXRlSW4sIGFuZCBpdCB3b3VsZCBiZSBt ZXNzeSB0byBoYXZlIGEgcGx1Z2luIHRoYXQgZGVhbHMgd2l0aCBkZXNjcmlwdG9yIGdlbmVyYXRp b24gYW5kIGRlcGxveWluZyB0byBkaWZmZXJlbnQgcG9ydGFsIGNvbnRhaW5lcnMuPC9kaXY+CgoK Cgo8ZGl2Pgo8ZGl2PsKgPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHls ZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1s ZWZ0OjFleCI+CjxkaXY+wqAtwqBDb21tYW5kIG5hbWVzIGFuZCBvcHRpb25zIGFyZSBjb3JyZWN0 PzwvZGl2PjxkaXY+VGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLjwvZGl2PjxkaXY+PGJyPjwvZGl2 PjxkaXY+Rm9yIG5vdyBoZXJlJiMzOTtzIHdoYXQgeW91IGNhbiBkbzrCoDwvZGl2PjxkaXY+wqAk IHBvcnRsZXQgc2V0dXA8L2Rpdj48L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29s aWQ7cGFkZGluZy1sZWZ0OjFleCI+CgoKCgoKPGRpdj7CoCTCoHBvcnRsZXQgYWRkIC0tbmFtZWQg aGVsbG9wb3J0bGV0IC0tdGl0bGUgJnF1b3Q7TXkgZm9yZ2UgcG9ydGxldCZxdW90OyAtLXNob3J0 LXRpdGxlIEZvcmdlUG9ydGxldCAtLWtleXdvcmRzICZxdW90O2RlbW8sZm9yZ2UscG9ydGxldCZx dW90OzwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2Pk1pZ2h0IG1h a2UgaXQgY2xlYXJlciBmb3IgY29tbWFuZCB0byBiZSBjYWxsZWQgJnF1b3Q7bmV3LXBvcnRsZXQm cXVvdDsgaW5zdGVhZCBvZiAmcXVvdDthZGQmcXVvdDs8L2Rpdj4KCgoKCjxkaXY+CjxkaXY+wqA8 L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAg LjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj7C oCQgcG9ydGxldCBhZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgu cG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLnZpZXcgLS12YWx1ZSAmcXVvdDsvaG9tZS54aHRt bCZxdW90OzwvZGl2PjxkaXY+wqAkIHBvcnRsZXQgYWRkLXBhcmFtIC0tcG9ydGxldCBoZWxsb3Bv cnRsZXQgLS1uYW1lIGphdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5lZGl0IC0tdmFs dWUgJnF1b3Q7L2VkaXQueGh0bWwmcXVvdDs8L2Rpdj4KCgoKCgoKPGRpdj7CoCQgcG9ydGxldCBh ZGQtcGFyYW0gLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLW5hbWUgamF2YXgucG9ydGxldC5mYWNl cy5kZWZhdWx0Vmlld0lkLmhlbHAgLS12YWx1ZSAmcXVvdDsvaGVscC54aHRtbCZxdW90OzwvZGl2 PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PkNvdWxkIGJlIG5pY2UgdG8g aGF2ZSB0aGUgJnF1b3Q7bmV3LXBvcnRsZXQmcXVvdDsgY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNy ZWF0ZSB0aGVzZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGRlZmF1bHQgdmFsdWVzIHlvdSBzcGVjaWZ5 IGFib3ZlLCBhcyB3aXRob3V0IHRoZW0gYSBwb3J0bGV0IHdvbiYjMzk7dCBkZXBsb3kgc3VjY2Vz c2Z1bGx5LiDCoEp1c3QgYXMgeW91IGhhdmUgd2l0aCB0aGUgZGVmYXVsdCBwb3J0bGV0IG1vZGVz IHRoYXQgYXJlIGRlZmluZWQuPC9kaXY+CgoKCgoKPGRpdj7CoDwvZGl2PjxkaXY+SXQgd291bGQg YWxzbyBiZSBuaWNlIHRvIGhhdmUgYWxpYXNlZCBhZGQtcGFyYW0gdmVyc2lvbnMgZm9yIHNwZWNp ZmljYWxseSBhZGRpbmcgYSB2aWV3LCBlZGl0IGFuZCBoZWxwIHZpZXdJZC4gwqBJdCYjMzk7cyBw cmV0dHkgb25lcm91cyB0byBmb3JjZSBzb21lb25lIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBzeW50 YXggb2YgamF2YXgucG9ydGxldC5mYWNlcy5kZWZhdWx0Vmlld0lkLiogZXZlcnkgdGltZSB0aGV5 IHdhbnQgdG8gYWRkIG9yIG1vZGlmeSB3aGF0IHZpZXdJZCBlYWNoIG9mIHRob3NlIHBvcnRsZXQg bW9kZXMgcG9pbnRzIGF0LjwvZGl2PgoKCgoKCjxkaXY+PGJyPjwvZGl2PjxkaXY+U28geW91IGNv dWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6PC9kaXY+PGRpdj4kIHBvcnRsZXQgc2V0LXZpZXctaWQg LS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLXZpZXcgJnF1b3Q7L2hvbWUuaHRtbCZxdW90OzwvZGl2 PjxkaXY+PGRpdj4kIHBvcnRsZXQgc2V0LWVkaXQtaWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAt LXZpZXcgJnF1b3Q7L2VkaXQuaHRtbCZxdW90OzwvZGl2PgoKCgoKCjwvZGl2PjxkaXY+PGRpdj4k IHBvcnRsZXQgc2V0LWhlbHAtaWQgLS1wb3J0bGV0IGhlbGxvcG9ydGxldCAtLXZpZXcgJnF1b3Q7 L2hlbHAuaHRtbCZxdW90OzwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YW5kIHRoZW4g aW50ZXJuYWxseSBpdCBhY3R1YWxseSBjYWxscyBhZGQtcGFyYW0gd2l0aCB0aGUgYWRkaXRpb24g b2YgdGhlIGFwcHJvcHJpYXRlIHBhcmFtIG5hbWUuPC9kaXY+CgoKCgoKPGRpdj48YnI+PC9kaXY+ PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7 Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdj48ZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY+QW5kIHRoZSByZXN1bHQgaXMgOgo8L2Rpdj48ZGl2PnNyYy9tYWlu L3dlYmFwcC9XRUItSU5GL3BvcnRsZXQueG1sPC9kaXY+PGRpdj4tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvZGl2PjxkaXY+PGRpdj48ZGl2PiZs dDs/eG1sIHZlcnNpb249JnF1b3Q7MS4wJnF1b3Q7IGVuY29kaW5nPSZxdW90O1VURi04JnF1b3Q7 IHN0YW5kYWxvbmU9JnF1b3Q7bm8mcXVvdDs/Jmd0OzwvZGl2PgoKCgoKCgo8ZGl2PiZsdDtwb3J0 bGV0LWFwcCB4bWxucz0mcXVvdDs8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9w b3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2QiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5z dW4uY29tL3htbC9ucy9wb3J0bGV0L3BvcnRsZXQtYXBwXzJfMC54c2Q8L2E+JnF1b3Q7IHhtbG5z OnhzaT0mcXVvdDs8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0 YW5jZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWlu c3RhbmNlPC9hPiZxdW90OyB2ZXJzaW9uPSZxdW90OzIuMCZxdW90OyB4c2k6c2NoZW1hTG9jYXRp b249JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0 bGV0LWFwcF8yXzAueHNkIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS94bWwv bnMvcG9ydGxldC9wb3J0bGV0LWFwcF8yXzAueHNkPC9hPiZxdW90OyZndDs8L2Rpdj4KCgoKCgoK PGRpdj7CoCAmbHQ7cG9ydGxldCZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDtwb3J0bGV0LW5hbWUm Z3Q7aGVsbG9wb3J0bGV0Jmx0Oy9wb3J0bGV0LW5hbWUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCAmbHQ7 cG9ydGxldC1jbGFzcyZndDtqYXZheC5wb3J0bGV0LmZhY2VzLkdlbmVyaWNGYWNlc1BvcnRsZXQm bHQ7L3BvcnRsZXQtY2xhc3MmZ3Q7PC9kaXY+PGRpdj7CoCDCoCAmbHQ7c3VwcG9ydHMmZ3Q7PC9k aXY+CgoKCgoKCjxkaXY+wqAgwqAgwqAgJmx0O21pbWUtdHlwZSZndDt0ZXh0L2h0bWwmbHQ7L21p bWUtdHlwZSZndDs8L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDtwb3J0bGV0LW1vZGUmZ3Q7RURJVCZs dDsvcG9ydGxldC1tb2RlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3BvcnRsZXQtbW9kZSZn dDtIRUxQJmx0Oy9wb3J0bGV0LW1vZGUmZ3Q7PC9kaXY+PGRpdj7CoCDCoCDCoCAmbHQ7cG9ydGxl dC1tb2RlJmd0O1ZJRVcmbHQ7L3BvcnRsZXQtbW9kZSZndDs8L2Rpdj4KCgoKCgoKPGRpdj7CoCDC oCAmbHQ7L3N1cHBvcnRzJmd0OzwvZGl2PjxkaXY+wqAgwqAgJmx0O3BvcnRsZXQtaW5mbyZndDs8 L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDt0aXRsZSZndDtNeSBmb3JnZSBwb3J0bGV0Jmx0Oy90aXRs ZSZndDs8L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDtzaG9ydC10aXRsZSZndDtGb3JnZVBvcnRsZXQm bHQ7L3Nob3J0LXRpdGxlJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O2tleXdvcmRzJmd0O2Rl bW8sZm9yZ2UscG9ydGxldCZsdDsva2V5d29yZHMmZ3Q7PC9kaXY+CgoKCgoKCjxkaXY+wqAgwqAg Jmx0Oy9wb3J0bGV0LWluZm8mZ3Q7PC9kaXY+PGRpdj7CoCDCoCAmbHQ7aW5pdC1wYXJhbSZndDs8 L2Rpdj48ZGl2PsKgIMKgIMKgICZsdDtuYW1lJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVs dFZpZXdJZC52aWV3Jmx0Oy9uYW1lJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3ZhbHVlJmd0 Oy9ob21lLnhodG1sJmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDsvaW5pdC1wYXJh bSZndDs8L2Rpdj4KCgoKCgoKPGRpdj7CoCDCoCAmbHQ7aW5pdC1wYXJhbSZndDs8L2Rpdj48ZGl2 PsKgIMKgIMKgICZsdDtuYW1lJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5l ZGl0Jmx0Oy9uYW1lJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3ZhbHVlJmd0Oy9lZGl0Lnho dG1sJmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDsvaW5pdC1wYXJhbSZndDs8L2Rp dj48ZGl2PsKgIMKgICZsdDtpbml0LXBhcmFtJmd0OzwvZGl2PgoKCgoKCgo8ZGl2PsKgIMKgIMKg ICZsdDtuYW1lJmd0O2phdmF4LnBvcnRsZXQuZmFjZXMuZGVmYXVsdFZpZXdJZC5oZWxwJmx0Oy9u YW1lJmd0OzwvZGl2PjxkaXY+wqAgwqAgwqAgJmx0O3ZhbHVlJmd0Oy9oZWxwLnhodG1sJmx0Oy92 YWx1ZSZndDs8L2Rpdj48ZGl2PsKgIMKgICZsdDsvaW5pdC1wYXJhbSZndDs8L2Rpdj48ZGl2PsKg ICZsdDsvcG9ydGxldCZndDs8L2Rpdj48ZGl2PiZsdDsvcG9ydGxldC1hcHAmZ3Q7PC9kaXY+CgoK CgoKCjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVnYWRz LDwvZGl2PjxkaXY+SsOpcsOpbWllLjwvZGl2Pgo8YnI+PC9kaXY+PC9kaXY+X19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CmZvcmdlLWRldiBtYWlsaW5n IGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpmb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnIiB0YXJn ZXQ9Il9ibGFuayI+Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0 dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0YXJnZXQ9 Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1k ZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48L2Rpdj4KPGJyPl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpmb3JnZS1kZXYgbWFp bGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZyIg dGFyZ2V0PSJfYmxhbmsiPmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgo8YSBocmVm PSJodHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldiIgdGFy Z2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9y Z2UtZGV2PC9hPjxicj4KPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PGJyIGNsZWFyPSJhbGwi Pjxicj48L2Rpdj48L2Rpdj48c3Bhbj48Zm9udCBjb2xvcj0iIzg4ODg4OCI+LS0gPGJyPkxpbmNv bG4gQmF4dGVyLCBJSUk8YnI+PGEgaHJlZj0iaHR0cDovL29jcHNvZnQub3JnIiB0YXJnZXQ9Il9i bGFuayI+aHR0cDovL29jcHNvZnQub3JnPC9hPjxicj4mcXVvdDtTaW1wbGVyIGlzIGJldHRlci4m cXVvdDs8YnI+CgoKCgo8L2ZvbnQ+PC9zcGFuPjxicj5fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXzxicj4KZm9yZ2UtZGV2IG1haWxpbmcgbGlzdDxicj4KPGEg aHJlZj0ibWFpbHRvOmZvcmdlLWRldkBsaXN0cy5qYm9zcy5vcmciIHRhcmdldD0iX2JsYW5rIj5m b3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5q Ym9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRw czovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldjwvYT48YnI+Cjxi cj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8 L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjwvZGl2PjwvZGl2Pgo8YnI+X19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CmZvcmdlLWRldiBt YWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpmb3JnZS1kZXZAbGlzdHMuamJvc3Mub3Jn IiB0YXJnZXQ9Il9ibGFuayI+Zm9yZ2UtZGV2QGxpc3RzLmpib3NzLm9yZzwvYT48YnI+CjxhIGhy ZWY9Imh0dHBzOi8vbGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZm9yZ2UtZGV2IiB0 YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9m b3JnZS1kZXY8L2E+PGJyPgo8YnI+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj48YnIgY2xlYXI9ImFs bCI+PGJyPi0tIDxicj5MaW5jb2xuIEJheHRlciwgSUlJPGJyPjxhIGhyZWY9Imh0dHA6Ly9vY3Bz b2Z0Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9vY3Bzb2Z0Lm9yZzwvYT48YnI+JnF1b3Q7 U2ltcGxlciBpcyBiZXR0ZXIuJnF1b3Q7PGJyPgo8L2Rpdj48L2Rpdj48YnI+X19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CmZvcmdlLWRldiBtYWlsaW5n IGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpmb3JnZS1kZXZAbGlzdHMuamJvc3Mub3JnIj5mb3Jn ZS1kZXZAbGlzdHMuamJvc3Mub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy5qYm9z cy5vcmcvbWFpbG1hbi9saXN0aW5mby9mb3JnZS1kZXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczov L2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvcmdlLWRldjwvYT48YnI+Cjxicj48 L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2Pgo= --===============7875669910529767573==--