Registration open for Community Over Code North America

2023-08-28 Thread Rich Bowen
Hello! Registration is still open for the upcoming Community Over Code
NA event in Halifax, NS! We invite you to  register for the event
https://communityovercode.org/registration/

Apache Committers, note that you have a special discounted rate for the
conference at US$250. To take advantage of this rate, use the special
code sent to the committers@ list by Brian Proffitt earlier this month.

If you are in need of an invitation letter, please consult the
information at https://communityovercode.org/visa-letter/

Please see https://communityovercode.org/ for more information about
the event, including how to make reservations for discounted hotel
rooms in Halifax. Discounted rates will only be available until Sept.
5, so reserve soon!

--Rich, for the event planning team

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Final reminder: ApacheCon North America call for presentations closing soon

2022-05-19 Thread Rich Bowen
[Note: You're receiving this because you are subscribed to one or more
Apache Software Foundation project mailing lists.]

This is your final reminder that the Call for Presetations for
ApacheCon North America 2022 will close at 00:01 GMT on Monday, May
23rd, 2022. Please don't wait! Get your talk proposals in now!

Details here: https://apachecon.com/acna2022/cfp.html

--Rich, for the ApacheCon Planners



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Call for Presentations now open, ApacheCon North America 2022

2022-03-30 Thread Rich Bowen
[You are receiving this because you are subscribed to one or more user
or dev mailing list of an Apache Software Foundation project.]

ApacheCon draws participants at all levels to explore “Tomorrow’s
Technology Today” across 300+ Apache projects and their diverse
communities. ApacheCon showcases the latest developments in ubiquitous
Apache projects and emerging innovations through hands-on sessions,
keynotes, real-world case studies, trainings, hackathons, community
events, and more.

The Apache Software Foundation will be holding ApacheCon North America
2022 at the New Orleans Sheration, October 3rd through 6th, 2022. The
Call for Presentations is now open, and will close at 00:01 UTC on May
23rd, 2022.

We are accepting presentation proposals for any topic that is related
to the Apache mission of producing free software for the public good.
This includes, but is not limited to:

Community
Big Data
Search
IoT
Cloud
Fintech
Pulsar
Tomcat

You can submit your session proposals starting today at
https://cfp.apachecon.com/

Rich Bowen, on behalf of the ApacheCon Planners
apachecon.com
@apachecon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon starts tomorrow!

2021-09-20 Thread Rich Bowen
ApacheCon @Home starts tomorrow! Details at 
https://www.apachecon.com/acah2021/index.html


(Note: You're receiving this because you are subscribed to one or more 
user lists for Apache Software Foundation projects.)


We've got three days of great content lined up for you, spanning 14 
project communities. And we're very excited about the keynotes, with 
presentations from David Nalley, Ashley Wolfe, Mark Cox, Alison Parker, 
and Michael Weinberg. And we'll be hearing from our Platinum sponsors in 
their keynotes as well! (Schedule is at 
https://www.apachecon.com/acah2021/tracks/)


You can still register today, at 
https://www.apachecon.com/acah2021/register.html


We especially want to thank our sponsors, who have made this event possible:

Strategic sponsor: Google
Platinum sponsors: Huawei, Tencent, Instaclustr, and Apple
Gold sponsors: AWS, Aiven, Gradle, Replicated, Red 
Hat, Baidu, Fiter, Cerner, Dremio, and Didi
Silver sponsors: Bamboo, SpereEx, Microsoft, Imply, Securonix, DataStax, 
and Crafter Software

Bronze sponsor: Technical Arts

Please join us on our Slack for discussion before, during, and after the 
event! http://s.apache.org/apachecon-slack


And follow us on Twitter - https://twitter.com/apachecon - for tips and 
announcements during the event.


See you tomorrow!


--
Rich Bowen, VP Conferences
The Apache Software Foundation
https://apachecon.com/
@apachecon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon is just 3 weeks away!

2021-09-03 Thread Rich Bowen
[You are receiving this email because you are subscribed to the user 
list of one or more Apache project.]


Dear Apache enthusiast,

ApacheCon is our annual convention, featuring content related to our 
many software projects. This year, it will be held on September 21-23.


Registration is free this year, and since it’s online, you can attend 
from the comfort of your home or office.


Details about the event, including the schedule and registration, are 
available on the event website at https://apachecon.com/acah2021/


We hope you’ll consider attending this year, where you’ll see content in 
14 tracks, including: API & Microservice; Big Data: Ozone; Big Data: 
SQL/NoSQL; Big Data: Streaming; Cassandra; Community; Content Delivery; 
Content Management; Federated Data; Fineract & Fintech; Geospatial; 
Groovy; Highlights; Incubator; Integration; Internet of Things; 
Observability; Search; Tomcat.


We will also feature keynotes from Ashley Wolf, Mark Cox, Alison Parker 
and Michael Weinberg.


Details on the schedule, and these keynotes, can be found at 
https://www.apachecon.com/acah2021/tracks/


We look forward to seeing you at this year’s ApacheCon!

– Rich Bowen, for the Apachecon Planners

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Call for Presentations for ApacheCon 2021 now open

2021-03-08 Thread Rich Bowen
[Note: You are receiving this because you are subscribed to a users@ 
list on one or more Apache Software Foundation projects.]


The ApacheCon Planners and the Apache Software Foundation are pleased to 
announce that ApacheCon@Home will be held online, September 21-23, 2021. 
Once again, we’ll be featuring content from dozens of our projects, as 
well as content about our community, how Apache works, business models 
around Apache software, the legal aspects of open source, and many other 
topics.


Last year’s virtual ApacheCon@Home event was a big success, with 5,745 
registrants from more than 150 countries, spanning every time zone, with 
the virtual format delivering content to attendees who would never have 
attended an in-person ApacheCon (83% of post-event poll responders in 
2020 indicated this was their first ApacheCon ever)!


Given the great participation and excitement for last year’s event, we 
are announcing the Call for Presentations is now open to presenters from 
around the world until May 1st. Talks can be focused on the topics 
above, as well as any of our amazing projects. Submit your talks today!


https://www.apachecon.com/acah2021/cfp.html

We look forward to reviewing your contribution to one of the most 
popular open source software events in the world!



Rich, for the ApacheCon Planners

--
Rich Bowen, VP Conferences
The Apache Software Foundation
https://apachecon.com/
@apachecon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Announcing ApacheCon @Home 2020

2020-06-29 Thread Rich Bowen

Hi, Apache enthusiast!

(You’re receiving this because you’re subscribed to one or more dev or 
user mailing lists for an Apache Software Foundation project.)


The ApacheCon Planners and the Apache Software Foundation are pleased to 
announce that ApacheCon @Home will be held online, September 29th 
through October 1st, 2020. We’ll be featuring content from dozens of our 
projects, as well as content about community, how Apache works, business 
models around Apache software, the legal aspects of open source, and 
many other topics.


Full details about the event, and registration, is available at 
https://apachecon.com/acah2020


Due to the confusion around how and where this event was going to be 
held, and in order to open up to presenters from around the world who 
may previously have been unable or unwilling to travel, we’ve reopened 
the Call For Presentations until July 13th. Submit your talks today at 
https://acna2020.jamhosted.net/


We hope to see you at the event!
Rich Bowen, VP Conferences, The Apache Software Foundation

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Call for presentations for ApacheCon North America 2020 now open

2020-01-21 Thread Rich Bowen

Dear Apache enthusiast,

(You’re receiving this message because you are subscribed to one or more 
project mailing lists at the Apache Software Foundation.)


The call for presentations for ApacheCon North America 2020 is now open 
at https://apachecon.com/acna2020/cfp


ApacheCon will be held at the Sheraton, New Orleans, September 28th 
through October 2nd, 2020.


As in past years, ApacheCon will feature tracks focusing on the various 
technologies within the Apache ecosystem, and so the call for 
presentations will ask you to select one of those tracks, or “General” 
if the content falls outside of one of our already-organized tracks. 
These tracks are:


Karaf
Internet of Things
Fineract
Community
Content Delivery
Solr/Lucene (Search)
Gobblin/Big Data Integration
Ignite
Observability
Cloudstack
Geospatial
Graph
Camel/Integration
Flagon
Tomcat
Cassandra
Groovy
Web/httpd
General/Other

The CFP will close Friday, May 1, 2020 8:00 AM (America/New_York time).

Submit early, submit often, at https://apachecon.com/acna2020/cfp

Rich, for the ApacheCon Planners

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon North America 2019 Schedule Now Live!

2019-06-12 Thread Rich Bowen

Dear Apache Enthusiast,

(You’re receiving this message because you’re subscribed to one or more 
Apache Software Foundation project user mailing lists.)


We’re thrilled to announce the schedule for our upcoming conference, 
ApacheCon North America 2019, in Las Vegas, Nevada. See it now at 
https://www.apachecon.com/acna19/schedule.html  The event will be held 
September 9th through 12th at the Flamingo Hotel.  Register today at 
https://www.apachecon.com/acna19/register.html


Our schedule features keynotes by James Gosling, the father of Java; 
Samaira Mehta, founder and CEO of the Billion Kids Can Code project; and 
David Brin, noted science fiction author and futurist. And we’ll have a 
discussion panel featuring some of the founders of The Apache Software 
Foundation, talking about the past as well as their vision for the future.


ApacheCon is the flagship convention of the ASF, and features tracks 
curated by many of our project communities: Apache Drill, Apache Karaf, 
Big Data, TomcatCon, Apache Cloudstack, Integration, Apache Cassandra, 
Streaming, Geospatial software, Graph processing, Internet of Things, 
Community, Machine Learning, Apache Traffic Control, Apache Beam, 
Observability, OFBiz, and Mobile app development.


The Hackathon, which will run all day, every day, is the place to meet 
your project community, and get some serious work knocked out in a short 
focused time. The BarCamp is the place to discuss the topics that are 
important to you, with your colleagues, in an unconference format.


We offer financial assistance for travel and lodging for those who want 
to come to ApacheCon but are unable to afford it. Apply at 
http://apache.org/travel/ by June 21st to be considered for this.


If you’re unable to make it to North America, we’ll also be running 
ApacheCon Europe in Berlin in October. Details of that event are at 
https://aceu19.apachecon.com/


Follow us on Twitter - @ApacheCon - for all the latest updates. See you 
in Las Vegas!


Rich Bowen, VP Conferences, The ASF
rbo...@apache.org
http://apachecon.com/


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



4 Apache Events in 2019: DC Roadshow soon; next up Chicago, Las Vegas, and Berlin!

2019-03-06 Thread Rich Bowen
Dear Apache Enthusiast,

(You’re receiving this because you are subscribed to one or more user
mailing lists for an Apache Software Foundation project.)

TL;DR:
 * Apache Roadshow DC is in 3 weeks. Register now at
https://apachecon.com/usroadshowdc19/
 * Registration for Apache Roadshow Chicago is open.
http://apachecon.com/chiroadshow19
 * The CFP for ApacheCon North America is now open.
https://apachecon.com/acna19
 * Save the date: ApacheCon Europe will be held in Berlin, October 22nd
through 24th.  https://apachecon.com/aceu19


Registration is open for two Apache Roadshows; these are smaller events
with a more focused program and regional community engagement:

Our Roadshow event in Washington DC takes place in under three weeks, on
March 25th. We’ll be hosting a day-long event at the Fairfax campus of
George Mason University. The roadshow is a full day of technical talks
(two tracks) and an open source job fair featuring AWS, Bloomberg, dito,
GridGain, Linode, and Security University. More details about the
program, the job fair, and to register, visit
https://apachecon.com/usroadshowdc19/

Apache Roadshow Chicago will be held May 13-14th at a number of venues
in Chicago’s Logan Square neighborhood. This event will feature sessions
in AdTech, FinTech and Insurance, startups, “Made in Chicago”, Project
Shark Tank (innovations from the Apache Incubator), community diversity,
and more. It’s a great way to learn about various Apache projects “at
work” while playing at a brewery, a beercade, and a neighborhood bar.
Sign up today at https://www.apachecon.com/chiroadshow19/

We’re delighted to announce that the Call for Presentations (CFP) is now
open for ApacheCon North America in Las Vegas, September 9-13th! As the
official conference series of the ASF, ApacheCon North America will
feature over a dozen Apache project summits, including Cassandra,
Cloudstack, Tomcat, Traffic Control, and more. We’re looking for talks
in a wide variety of categories -- anything related to ASF projects and
the Apache development process. The CFP closes at midnight on May 26th.
In addition, the ASF will be celebrating its 20th Anniversary during the
event. For more details and to submit a proposal for the CFP, visit
https://apachecon.com/acna19/ . Registration will be opening soon.

Be sure to mark your calendars for ApacheCon Europe, which will be held
in Berlin, October 22-24th at the KulturBrauerei, a landmark of Berlin's
industrial history. In addition to innovative content from our projects,
we are collaborating with the Open Source Design community
(https://opensourcedesign.net/) to offer a track on design this year.
The CFP and registration will open soon at https://apachecon.com/aceu19/ .

Sponsorship opportunities are available for all events, with details
listed on each event’s site at http://apachecon.com/.

We look forward to seeing you!

Rich, for the ApacheCon Planners
@apachecon


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Speakers needed for Apache DC Roadshow

2018-09-11 Thread Rich Bowen
We need your help to make the Apache Washington DC Roadshow on Dec 4th a 
success.


What do we need most? Speakers!

We're bringing a unique DC flavor to this event by mixing Open Source 
Software with talks about Apache projects as well as OSS CyberSecurity, 
OSS in Government and and OSS Career advice.


Please take a look at: http://www.apachecon.com/usroadshow18/

(Note: You are receiving this message because you are subscribed to one 
or more mailing lists at The Apache Software Foundation.)


Rich, for the ApacheCon Planners

--
rbo...@apache.org
http://apachecon.com
@ApacheCon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Register now for ApacheCon and save $250

2018-07-09 Thread Rich Bowen

Greetings, Apache software enthusiasts!

(You’re getting this because you’re on one or more dev@ or users@ lists 
for some Apache Software Foundation project.)


ApacheCon North America, in Montreal, is now just 80 days away, and 
early bird prices end in just two weeks - on July 21. Prices will be 
going up from $550 to $800 so register NOW to save $250, at 
http://apachecon.com/acna18


And don’t forget to reserve your hotel room. We have negotiated a 
special rate and the room block closes August 24. 
http://www.apachecon.com/acna18/venue.html


Our schedule includes over 100 talks and we’ll be featuring talks from 
dozens of ASF projects.,  We have inspiring keynotes from some of the 
brilliant members of our community and the wider tech space, including:


 * Myrle Krantz, PMC chair for Apache Fineract, and leader in the open 
source financing space
 * Cliff Schmidt, founder of Literacy Bridge (now Amplio) and creator 
of the Talking Book project

 * Bridget Kromhout, principal cloud developer advocate at Microsoft
 * Euan McLeod, Comcast engineer, and pioneer in streaming video

We’ll also be featuring tracks for Geospatial science, Tomcat, 
Cloudstack, and Big Data, as well as numerous other fields where Apache 
software is leading the way. See the full schedule at 
http://apachecon.com/acna18/schedule.html


As usual we’ll be running our Apache BarCamp, the traditional ApacheCon 
Hackathon, and the Wednesday evening Lighting Talks, too, so you’ll want 
to be there.


Register today at http://apachecon.com/acna18 and we’ll see you in Montreal!

--
Rich Bowen
VP, Conferences, The Apache Software Foundation
h...@apachecon.com
@ApacheCon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon North America 2018 schedule is now live.

2018-05-01 Thread Rich Bowen

Dear Apache Enthusiast,

We are pleased to announce our schedule for ApacheCon North America 
2018. ApacheCon will be held September 23-27 at the Montreal Marriott 
Chateau Champlain in Montreal, Canada.


Registration is open! The early bird rate of $575 lasts until July 21, 
at which time it goes up to $800. And the room block at the Marriott 
($225 CAD per night, including wifi) closes on August 24th.


We will be featuring more than 100 sessions on Apache projects. The 
schedule is now online at https://apachecon.com/acna18/


The schedule includes full tracks of content from Cloudstack[1], 
Tomcat[2], and our GeoSpatial community[3].


We will have 4 keynote speakers, two of whom are Apache members, and two 
from the wider community.


On Tuesday, Apache member and former board member Cliff Schmidt will be 
speaking about how Amplio uses technology to educate and improve the 
quality of life of people living in very difficult parts of the 
world[4]. And Apache Fineract VP Myrle Krantz will speak about how Open 
Source banking is helping the global fight against poverty[5].


Then, on Wednesday, we’ll hear from Bridget Kromhout, Principal Cloud 
Developer Advocate from Microsoft, about the really hard problem in 
software - the people[6]. And Euan McLeod, ‎VP VIPER at ‎Comcast will 
show us the many ways that Apache software delivers your favorite shows 
to your living room[7].


ApacheCon will also feature old favorites like the Lightning Talks, the 
Hackathon (running the duration of the event), PGP key signing, and lots 
of hallway-track time to get to know your project community better.


Follow us on Twitter, @ApacheCon, and join the disc...@apachecon.com 
mailing list (send email to discuss-subscr...@apachecon.com) to stay up 
to date with developments. And if your company wants to sponsor this 
event, get in touch at h...@apachecon.com for opportunities that are 
still available.


See you in Montreal!

Rich Bowen
VP Conferences, The Apache Software Foundation
h...@apachecon.com
@ApacheCon

[1] http://cloudstackcollab.org/
[2] http://tomcat.apache.org/conference.html
[3] http://apachecon.dukecon.org/acna/2018/#/schedule?search=geospatial
[4] 
http://apachecon.dukecon.org/acna/2018/#/scheduledEvent/df977fd305a31b903
[5] 
http://apachecon.dukecon.org/acna/2018/#/scheduledEvent/22c6c30412a3828d6
[6] 
http://apachecon.dukecon.org/acna/2018/#/scheduledEvent/fbbb2384fa91ebc6b
[7] 
http://apachecon.dukecon.org/acna/2018/#/scheduledEvent/88d50c3613852c2de


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Save the date: ApacheCon North America, September 24-27 in Montréal

2018-02-20 Thread Rich Bowen

Dear Apache Enthusiast,

(You’re receiving this message because you’re subscribed to a user@ or 
dev@ list of one or more Apache Software Foundation projects.)


We’re pleased to announce the upcoming ApacheCon [1] in Montréal, 
September 24-27. This event is all about you — the Apache project community.


We’ll have four tracks of technical content this time, as well as lots 
of opportunities to connect with your project community, hack on the 
code, and learn about other related (and unrelated!) projects across the 
foundation.


The Call For Papers (CFP) [2] and registration are now open. Register 
early to take advantage of the early bird prices and secure your place 
at the event hotel.


Important dates
March 30: CFP closes
April 20: CFP notifications sent
	August 24: Hotel room block closes (please do not wait until the last 
minute)


Follow @ApacheCon on Twitter to be the first to hear announcements about 
keynotes, the schedule, evening events, and everything you can expect to 
see at the event.


See you in Montréal!

Sincerely, Rich Bowen, V.P. Events,
on behalf of the entire ApacheCon team

[1] http://www.apachecon.com/acna18
[2] https://cfp.apachecon.com/conference.html?apachecon-north-america-2018

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Last chance: ApacheCon is just three weeks away

2017-04-26 Thread Rich Bowen
ApacheCon is just three weeks away, in Miami, Florida, May 15th - 18th.
http://apachecon.com/

There's still time to register and attend. ApacheCon is the best place
to find out about tomorrow's software, today.

ApacheCon is the official convention of The Apache Software Foundation,
and includes the co-located events:
  * Apache: Big Data
  * Apache: IoT
  * TomcatCon
  * FlexJS Summit
  * Cloudstack Collaboration Conference
  * BarCampApache
  * ApacheCon Lightning Talks

And there's dozens of opportunities to meet your fellow Apache
enthusiasts, both from your project, and from the other 200+ projects at
the Apache Software Foundation.

Register here:
http://events.linuxfoundation.org/events/apachecon-north-america/attend/register-

More information here: http://apachecon.com/

Follow us and learn more about ApacheCon:
  * Twitter: @ApacheCon
  * Discussion mailing list:
https://lists.apache.org/list.html?apachecon-disc...@apache.org
  * Podcasts and speaker interviews: http://feathercast.apache.org/
  * IRC: #apachecon on the https://freenode.net/

We look forward to seeing you in Miami!

-- 
Rich Bowen - VP Conferences, The Apache Software Foundation
http://apachecon.com/
@apachecon



signature.asc
Description: OpenPGP digital signature


FINAL REMINDER: CFP for ApacheCon closes February 11th

2017-02-08 Thread Rich Bowen
Dear Apache Enthusiast,

This is your FINAL reminder that the Call for Papers (CFP) for ApacheCon
Miami is closing this weekend - February 11th. This is your final
opportunity to submit a talk for consideration at this event.

This year, we are running several mini conferences in conjunction with
the main event, so if you're submitting for one of those events, please
pay attention to the instructions below.

Apache: Big Data
* Event information:
http://events.linuxfoundation.org/events/apache-big-data-north-america
* CFP:
http://events.linuxfoundation.org/events/apache-big-data-north-america/program/cfp

Apache: IoT (Internet of Things)
* Event Information: http://us.apacheiot.org/
* CFP -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp
(Indicate 'IoT' in the Target Audience field)

CloudStack Collaboration Conference
* Event information: http://us.cloudstackcollab.org/
* CFP -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp
(Indicate 'CloudStack' in the Target Audience field)

FlexJS Summit
* Event information - http://us.apacheflexjs.org/
* CFP -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp
(Indicate 'Flex' in the Target Audience field)

TomcatCon
* Event information - https://tomcat.apache.org/conference.html
* CFP -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp
(Indicate 'Tomcat' in the Target Audience field)

All other topics and projects
* Event information -
http://events.linuxfoundation.org/events/apachecon-north-america/program/about
* CFP -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp

Admission to any of these events also grants you access to all of the
others.

Thanks, and we look forward to seeing you in Miami!

-- 
Rich Bowen
VP Conferences, Apache Software Foundation
rbo...@apache.org
Twitter: @apachecon



(You are receiving this email because you are subscribed to a dev@ or
users@ list of some Apache Software Foundation project. If you do not
wish to receive email from these lists any more, you must follow that
list's unsubscription procedure. View the headers of this message for
unsubscription instructions.)

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon CFP closing soon (11 February)

2017-01-18 Thread Rich Bowen
Hello, fellow Apache enthusiast. Thanks for your participation, and
interest in, the projects of the Apache Software Foundation.

I wanted to remind you that the Call For Papers (CFP) for ApacheCon
North America, and Apache: Big Data North America, closes in less than a
month. If you've been putting it off because there was lots of time
left, it's time to dig for that inspiration and get those talk proposals in.

It's also time to discuss with your developer and user community whether
there's a track of talks that you might want to propose, so that you
have more complete coverage of your project than a talk or two.

We're looking for talks directly, and indirectly, related to projects at
the Apache Software Foundation. These can be anything from in-depth
technical discussions of the projects you work with, to talks about
community, documentation, legal issues, marketing, and so on. We're also
very interested in talks about projects and services built on top of
Apache projects, and case studies of how you use Apache projects to
solve real-world problems.

We are particularly interested in presentations from Apache projects
either in the Incubator, or recently graduated. ApacheCon is where
people come to find out what technology they'll be using this time next
year.

Important URLs are:

To submit a talk for Apache: Big Data -
http://events.linuxfoundation.org/events/apache-big-data-north-america/program/cfp
To submit a talk for ApacheCon -
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp

To register for Apache: Big Data -
http://events.linuxfoundation.org/events/apache-big-data-north-america/attend/register-
To register for ApacheCon -
http://events.linuxfoundation.org/events/apachecon-north-america/attend/register-

Early Bird registration rates end March 12th, but if you're a committer
on an Apache project, you get the low committer rate, which is less than
half of the early bird rate!

For further updated about ApacheCon, follow us on Twitter, @ApacheCon,
or drop by our IRC channel, #apachecon on the Freenode IRC network. Or
contact me - rbo...@apache.org - with any questions or concerns.

Thanks!

Rich Bowen, VP Conferences, Apache Software Foundation

-- 
(You've received this email because you're on a dev@ or users@ mailing
list of an Apache Software Foundation project. For subscription and
unsubscription information, consult the headers of this email message,
as this varies from one list to another.)

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Save the date: ApacheCon Miami, May 15-19, 2017

2016-11-30 Thread Rich Bowen
Dear Apache enthusiast,

ApacheCon and Apache Big Data will be held at the Intercontinental in
Miami, Florida, May 16-18, 2017. Submit your talks, and register, at
http://apachecon.com/  Talks aimed at the Big Data section of the event
should go to
http://events.linuxfoundation.org/events/apache-big-data-north-america/program/cfp
while other talks should go to
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp


ApacheCon is the best place to meet the people that develop the software
that you use and rely on. It’s also a great opportunity to deepen your
involvement in the project, and perhaps make the leap to contributing.
And we find that user case studies, showcasing how you use Apache
projects to solve real world problems, are very popular at this event.
So, do consider whether you have a use case that might make a good
presentation.

ApacheCon will have many different ways that you can participate:

Technical Content: We’ll have three days of technical sessions covering
many of the projects at the ASF. We’ll be publishing a schedule of talks
on March 9th, so that you can plan what you’ll be attending

BarCamp: The Apache BarCamp is a standard feature of ApacheCon - an
un-conference style event, where the schedule is determined on-site by
the attendees, and anything is fair game.

Lightning Talks: Even if you don’t give a full-length talk, the
Lightning Talks are five minute presentations on any topic related to
the ASF, and can be given by any attendee. If there’s something you’re
passionate about, consider giving a Lightning Talk.

Sponsor: It costs money to put on a conference, and this is a great
opportunity for companies involved in Apache projects, or who benefit
from Apache code - your employers - to get their name and products in
front of the community. Sponsors can start any any monetary level, and
can sponsor everything from the conference badge lanyard, through larger
items such as video recordings and evening events. For more information
on sponsoring ApacheCon, see http://apachecon.com/sponsor/

So, get your tickets today at http://apachecon.com/ and submit your
talks. ApacheCon Miami is going to be our best ApacheCon yet, and you,
and your project, can’t afford to miss it.

-- 
Rich Bowen - rbo...@apache.org
VP, Conferences
http://apachecon.com
@apachecon


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon is now less than a month away!

2016-10-19 Thread Rich Bowen
Dear Apache Enthusiast,

ApacheCon Sevilla is now less than a month out, and we need your help
getting the word out. Please tell your colleagues, your friends, and
members of related technical communities, about this event. Rates go up
November 3rd, so register today!

ApacheCon, and Apache Big Data, are the official gatherings of the
Apache Software Foundation, and one of the best places in the world to
meet other members of your project community, gain deeper knowledge
about your favorite Apache projects, learn about the ASF. Your project
doesn't live in a vacuum - it's part of a larger family of projects that
have a shared set of values, as well as a shared governance model. And
many of our project have an overlap in developers, in communities, and
in subject matter, making ApacheCon a great place for cross-pollination
of ideas and of communities.

Some highlights of these events will be:

* Many of our board members and project chairs will be present
* The lightning talks are a great place to hear, and give, short
presentations about what you and other members of the community are
working on
* The key signing gets you linked into the web of trust, and better
able to verify our software releases
* Evening receptions and parties where you can meet community
members in a less formal setting
* The State of the Feather, where you can learn what the ASF has
done in the last year, and what's coming next year
* BarCampApache, an informal unconference-style event, is another
venue for discussing your projects at the ASF

We have a great schedule lined up, covering the wide range of ASF
projects, including:

* CI and CD at Scale: Scaling Jenkins with Docker and Apache Mesos -
Carlos Sanchez
* Inner sourcing 101 - Jim Jagielski
* Java Memory Leaks in Modular Environments - Mark Thomas

ApacheCon/Apache Big Data will be held in Sevilla, Spain, at the Melia
Sevilla, November 14th through 18th. You can find out more at
http://apachecon.com/  Other ways to stay up to date with ApacheCon are:

* Follow us on Twitter at @apachecon
* Join us on IRC, at #apachecon on the Freenode IRC network
* Join the apachecon-discuss mailing list by sending email to
apachecon-discuss-subscr...@apache.org
* Or contact me directly at rbo...@apache.org with questions,
comments, or to volunteer to help

See you in Sevilla!

-- 
Rich Bowen: VP, Conferences
rbo...@apache.org
http://apachecon.com/
@apachecon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon Seville CFP closes September 9th

2016-08-30 Thread Rich Bowen
It's traditional. We wait for the last minute to get our talk proposals
in for conferences.

Well, the last minute has arrived. The CFP for ApacheCon Seville closes
on September 9th, which is less than 2 weeks away. It's time to get your
talks in, so that we can make this the best ApacheCon yet.

It's also time to discuss with your developer and user community whether
there's a track of talks that you might want to propose, so that you
have more complete coverage of your project than a talk or two.

For Apache Big Data, the relevant URLs are:
Event details:
http://events.linuxfoundation.org/events/apache-big-data-europe
CFP:
http://events.linuxfoundation.org/events/apache-big-data-europe/program/cfp

For ApacheCon Europe, the relevant URLs are:
Event details: http://events.linuxfoundation.org/events/apachecon-europe
CFP: http://events.linuxfoundation.org/events/apachecon-europe/program/cfp

This year, we'll be reviewing papers "blind" - that is, looking at the
abstracts without knowing who the speaker is. This has been shown to
eliminate the "me and my buddies" nature of many tech conferences,
producing more diversity, and more new speakers. So make sure your
abstracts clearly explain what you'll be talking about.

For further updated about ApacheCon, follow us on Twitter, @ApacheCon,
or drop by our IRC channel, #apachecon on the Freenode IRC network.

-- 
Rich Bowen
WWW: http://apachecon.com/
Twitter: @ApacheCon

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



ApacheCon Europe call for papers open

2016-07-13 Thread Rich Bowen
As you are no doubt already aware, we will be holding ApacheCon in
Seville, Spain, the week of November 14th, 2016. The call for papers
(CFP) for this event is now open, and will remain open until 
September 9th.

The event is divided into two parts, each with its own CFP. The first
part of the event, called Apache Big Data, focuses on Big Data
projects and related technologies.

Website: http://events.linuxfoundation.org/events/apache-big-data-europe
CFP: http://events.linuxfoundation.org/events/apache-big-data-europe/program/cfp

The second part, called ApacheCon Europe, focuses on the Apache
Software Foundation as a whole, covering all projects, community
issues, governance, and so on.

Website: http://events.linuxfoundation.org/events/apachecon-europe
CFP: http://events.linuxfoundation.org/events/apachecon-europe/program/cfp

ApacheCon is the official conference of the Apache Software
Foundation, and is the best place to meet members of your project and
other ASF projects, and strengthen your project's community.

If your organization is interested in sponsoring ApacheCon, contact me
at e...@apache.org  ApacheCon is a great place to find the brightest
developers in the world, and experts on a huge range of technologies.

I hope to see you in Seville!



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



[ANNOUNCE] CFP open for ApacheCon North America 2016

2015-11-25 Thread Rich Bowen
Community growth starts by talking with those interested in your
project. ApacheCon North America is coming, are you?

We are delighted to announce that the Call For Presentations (CFP) is
now open for ApacheCon North America. You can submit your proposed
sessions at
http://events.linuxfoundation.org/events/apache-big-data-north-america/program/cfp
for big data talks and
http://events.linuxfoundation.org/events/apachecon-north-america/program/cfp
for all other topics.

ApacheCon North America will be held in Vancouver, Canada, May 9-13th
2016. ApacheCon has been running every year since 2000, and is the place
to build your project communities.

While we will consider individual talks we prefer to see related
sessions that are likely to draw users and community members. When
submitting your talk work with your project community and with related
communities to come up with a full program that will walk attendees
through the basics and on into mastery of your project in example use
cases. Content that introduces what's new in your latest release is also
of particular interest, especially when it builds upon existing well
know application models. The goal should be to showcase your project in
ways that will attract participants and encourage engagement in your
community, Please remember to involve your whole project community (user
and dev lists) when building content. This is your chance to create a
project specific event within the broader ApacheCon conference.

Content at ApacheCon North America will be cross-promoted as
mini-conferences, such as ApacheCon Big Data, and ApacheCon Mobile, so
be sure to indicate which larger category your proposed sessions fit into.

Finally, please plan to attend ApacheCon, even if you're not proposing a
talk. The biggest value of the event is community building, and we count
on you to make it a place where your project community is likely to
congregate, not just for the technical content in sessions, but for
hackathons, project summits, and good old fashioned face-to-face networking.

-- 
rbo...@apache.org
http://apache.org/

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Some Tapestry infection questions

2011-08-02 Thread Rich M

On 08/02/2011 12:16 PM, ERNESTO ARROYO RON wrote:

I am on holidays, and trying to use some Tapestry awesome features, as the 
inyection.

But I do not understand some issues, and cannot find the answer in the wiki or 
somewhere, to the info is not enough clear for me, sorry.

This is very simple. In the Java part of a page I want to inject the DAO, so I 
use this code:

@Inject
private IAplicacionesDAO appDAO;

To have this code running I need to add the service implementation via 
AppModule and bind:

public static void bind(ServiceBinder binder)
 {
binder.bind(IAplicacionesDAO.class,AplicacionesDAO.class);

Two questions:

a) if I add a constructor to the first class, I have an error:
Class com.earroyoron.pages.VerAplicaciones was not transformed for use as a 
component; this can happen if it is an interface, or was not in a package 
subject to component transformation
and in the documentation I read the constructor was needed! But without it 
works and with it I have an error….
A constructor should not be used in a Page or Component class. Tapestry 
does a lot of work behind the scenes when deployed to transform these 
classes you write so they function nicely. Read up on the page 
lifecycle: http://tapestry.apache.org/page-life-cycle.html


I assume there is some initialization you would like to do on your page 
when it is rendered and displayed (which you may have thought belonged 
in a constructor), for this you would implement one of the render 
lifecycle methods.  http://tapestry.apache.org/component-rendering.html


For example

@BeginRender
public void loadUser(){
userId = 1;
appDAO.loadUser(userId);
}


b) Cannot Tapestry find the service without the bind? The infection in the DAO 
to use Hibernate does not need to say nothing to Tapestry, it works without any 
extra configuration in module.

You will need to do the binding so it can auto-bind your service for 
you. You could alternately write a build method to build the service 
yourself, but that would be more work and I'm assuming is not what you 
wanted. http://tapestry.apache.org/defining-tapestry-ioc-services.html

Thank you in advance, when I learn I promise to help the newbies!
:O)





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Conversion from 5.1 to 5.2

2011-06-28 Thread Rich M

On 06/28/2011 01:13 PM, Kalle Korhonen wrote:


For Rich, the definite resolution is to increase the max amount of
memory allocated to permgen (for Sun's JVM).

Yea, after the 1 day crash we updated the JVM settings to:

-Xms512m -Xmx512m -XX:MaxPermSize=512m

Will follow up if problems still persist.

-Rich


Kalle

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Conversion from 5.1 to 5.2

2011-06-28 Thread Rich M
Just wanted to comment that I'm having very similar issues with an 
application that I upgraded the production version from 5.1 to 5.2. The 
5.1 app ran fine indefinitely with no issues.


After the upgrade it took about 1.5 days for the app to crash due to 
running out of PermGen space (at that point PermGen was not being tuned 
at all via JVM properties). After restarting it was stable for a few 
days, then another restart and it crashed in 1 day. This behavior was 
never observed on a demo machine running the same app with a very long 
uptime (months). The only differences between the apps are the database 
connected to and the number of users on the system over time.


No real resolution to provide yet nor am I even sure whether this is 
inherently Tapestry or some private code issue, but I'll be watching 
this thread and comment if I find anything out related.


-Rich

On 06/28/2011 12:16 PM, Norman Franke wrote:

On Jun 24, 2011, at 7:28 PM, Kalle Korhonen wrote:


On Fri, Jun 24, 2011 at 3:33 PM, Norman Franke  wrote:
After I had everything working pretty well, I put it onto the 
production
server where it ran for a few hours and then died with a PermGen 
exception.
Previously, my app would run for months with the 64 MB of PermGen 
allocated
to servers by default. Now, after upgrading to 5.2.5 it wouldn't run 
for
more than a few hours at 128 MB. I ended up setting it to 512 MB, 
but that
just seems outrageous. Is this normal to require 8x PermGen? I 
haven't made

any other change to my app, just those required to upgrade.


Good post, thanks for insights. As for the permgen usage, perhaps it's
not normal, but expected and even documented. At 250 pages, your web
application is likely bigger than a typical Tapestry app and permgen
consumption correlates with the size of the web app. However, in
return for higher permgen usage you'll have lower heap consumption, so
you'll get better scalability. What's the max you are allocating to
the JVM (the -Xmx) and have you tried finding a lower setting that
would still work? Permgen usage is for the whole JVM and no more will
be required even if you see increase in traffic, unlike in T5.1 case
with page pool. Since you have an internal app with fairly predictable
traffic pattern and scalability requirements it may not matter for
you, but for the common case it's a win with only minor disadvantages
(memory is cheap).


I'm allocating 768MB for the heap. I haven't tried lower, but jconsole 
indicates I'm using no more than 80 MB. So I'm a but puzzled at how it 
exceeded 128 MB. Perhaps when it threw an exception while I was 
getting some of the conversion issues resolved? Does throwing an 
exception leak PermGen?


-Norman



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry Remembers which page to navigate after User Logs in ?

2011-06-14 Thread Rich M
It might help to know the structure by which you control login and 
navigation inside the authorized portion of your application.


In my case, all the login forms explicitly return the Overview page :

public onSuccessFromForm(){
// Login validation
return overview;
}

@InjectPage
private Overview overview;

Is there some structure to your application that prevents this from 
being a usable pattern?


On 06/14/2011 04:07 PM, sunilmanu wrote:

Hello Everyone,

After the user is kicked out of a session and they try to login back,
Tapestry tries to take the user back to the last requested Page or tries to
execute the last requested Action ? Why does it behave like that ?

Is there a way I can configure it to go to a "PAGE-123" always after the
user logs in successfully ALL the time ? Right now because of this issue,
lot of users are complaining and they are getting Stale Link Exception
because after logging in it tries to take them to a page and lot of
information might be missing and it breaks.

So pl help or point me to right direction... !! Is there any particular
Cookie I need to delete when the redirect happens ?

thanks in advance for all the help...

thanks,
Sunil

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-Remembers-which-page-to-navigate-after-User-Logs-in-tp4489125p4489125.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Safari , DOM 12 Exception, core.js

2011-06-14 Thread Rich M

On 06/14/2011 02:33 PM, Howard Lewis Ship wrote:

Is is just one specific field that fails?  Perhaps there's something
odd about the field's name (the way naming a Form field "submit" can
cause grief ... something Tapestry won't even try to do now).

This code has changed in 5.3 recently, to defer the lookup until an
error actually needs to be displayed.

Hmm, interesting point. The first times it was failing on a field named 
'name'. That went away when I overrode the property block of the name 
field in the BeanEditForm (which had been implicit due to t:include 
directive) to explicitly declare the label and textfield, even though 
they were still set to 'name'. That behavior was what set off a '!' in 
my head about the whole thing, followed by the error jumping to a 
different field.


The new field it moved to was 'id', which already had a property block 
override written. When I renamed the t:id for the textfield for the id 
field to 'tid', this error went away. So in this case, it did seem to be 
a result of a name causing grief.


What worries me is that these are field names used conventionally across 
my entity objects. I'd not expect an entity field's name to trigger 
browser side effects. The workaround seems to be writing property 
overrides for every form related to an entity object with these names, 
or refactoring all the entity objects.


I suppose I can do one of the two for the time being, but I am curious 
as to some kind of resolution. It's hard from a developer's standpoint 
to infer that an entity field's name is going to circumstantially break 
an internal Component's behavior.


Regards,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Safari , DOM 12 Exception, core.js

2011-06-14 Thread Rich M

Hi,

an issue has recently been brought to my attention by QA, and I'm trying 
to unravel what is at play here.


The core of the problem is that I have a form with validation on a page, 
and when this page is loaded in Safari (5.0.2), the error console 
appears at the top saying that the TapestryInitializer.validate method 
failed due to DOM Exception 12 syntax error on the validation hash built 
by Tapestry.


After thorough debugging, I isolated the issue to a section of code from 
core.js, the code on line 7723 is failing with the DOM Exception 12 
error. More specifically, it is the down method that fails when it calls 
findElements and the line 3301 fails in that, when calling the 
root.querySelectorAll(e) method. The value of e here is the same as 
selector variable except there is '#[object HTMLInputElement] ' appended 
to the front


An example of the selector passed into the down method when it fails.
selector = "label[for='name']"
e = "#[object HTMLInputElement] label[for='name']"

Has anyone encountered something similar before and found a way to deal 
with it? I've gotten pretty far in uncovering the issue, but I'm running 
out of ideas as to a remedy. The validation fails on the page as a 
result, which QA is deeming unacceptable. Strangely enough, I never 
reproduced this bug in FireFox, Chrome, or IE at any point.


Below is the Associated Javascript.

Thanks,
Rich


Tapestry.FieldEventManager = Class.create( {
7715
7716initialize : function(field) {
7717this.field = $(field);
7718
7719var id = this.field.id;
7720
7721var selector = "label[for='" + id + "']";
7722
7723this.label = this.field.up("form").down(selector);
7724this.icon = $(id + '_icon');
7725
7726this.translator = Prototype.K;
7727
7728var fem = $(this.field.form).getFormEventManager();
7729
7730if (fem.validateOnBlur) {
7731
7732document.observe(Tapestry.FOCUS_CHANGE_EVENT, function(event) {
7733/*
7734* If changing focus *within the same form* then perform
7735* validation. Note that Tapestry.currentFocusField does not
7736* change until after the FOCUS_CHANGE_EVENT notification.
7737*/
7738if (Tapestry.currentFocusField == this.field
7739&& this.field.form == event.memo.form)
7740this.validateInput();
7741
7742}.bindAsEventListener(this));
7743}
7744
7745if (fem.validateOnSubmit) {
7746$(this.field.form).observe(Tapestry.FORM_VALIDATE_FIELDS_EVENT,
7747this.validateInput.bindAsEventListener(this));
7748}
7749}

findElements: function(root) {
3290root = root || document;
3291var e = this.expression, results;
3292
3293switch (this.mode) {
3294case 'selectorsAPI':
3295if (root !== document) {
3296var oldId = root.id, id = $(root).identify();
3297id = id.replace(/([\.:])/g, "\\$1");
3298e = "#" + id + " " + e;
3299}
3300
3301results = $A(root.querySelectorAll(e)).map(Element.extend);
3302root.id = oldId;
3303
3304return results;
3305case 'xpath':
3306return document._getElementsByXPath(this.xpath, root);
3307default:
3308return this.matcher(root);
3309}
3310}


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Clearing @SessionState

2011-06-06 Thread Rich M

On 06/06/2011 01:58 PM, Thiago H. de Paula Figueiredo wrote:
On Mon, 06 Jun 2011 14:34:20 -0300, robnangle  
wrote:



Eh I dont understand what you mean here. Am i not setting the user when
somebody logs in with a valid username and password?


I'm sorry, I overlooked the only place user is set. Having been using 
Tapestry since 5.0.5, almost four years ago, I'd say @SessionState 
works as it should. Your code uses too much side-effects for my taste. 
And I can't see the declarations of the username and password variables.




I'd have to say there is too much going on as well as omitted for an 
outside observer to really help much more than the suggestions that have 
been made by several of us to follow Tapestry standard practices


The best recommendation I could make it to make a much more simplified 
version, in separate pages perhaps, where all that happens is a login 
page -> authenticate user and establish session state -> display links 
depending on user type -> provide log out


Strip out any other logic like the fixtures, etc.

Here's how I might approach it (TML pages left out)

Login page class:

public class Login {
@InjectPage
private userIndex index;

@Inject
 private UserDAO udao;

@Component
private Form login;

@Component
private TextField uname;

@Component
private PasswordField pw;

@Property
private String username;

@Property
private String password;

public onSuccessFromLogin(){
if(udao.validateUser( username, password )){
return index.initialize( username );
}else{
login.recordError(uname, "User failed to validate!");
return null;
}
}

}

UserIndex page class:

public class UserIndex {

@SessionState(create=false)
 private User user;

public Object initialize(String username){
user = udao.read(username);

return this;
}

@Persist @Property
private Boolean adminUser;

@SetupRender
public void verifyPermissions(){
if(adminUser == null && user != null && 
"Admin".equalsIgnoreCase( user.getUserType() )){

adminUser = true;
}

 adminUser = false;
}

@Component
private EventLink logout;
@Inject
private Request req;

@InjectPage
private Login login;

public Object onLogout(){
user = null;
Session session = req.getSession(false);

if(session != null)
session.invalidate();

return login;
}

}

UserDAO interface class:

public interface UserDAO {
public User read(String username);

public boolean validate(String username, String password);
}

UserDAOImpl service class:

public class UserDAOImpl implements  UserDAO {


public User read(String username){
User user = null;

Handler handler = new Handler();
Connection conn = handler.getConnection();
PreparedStatement prep;

String read = "Select * from users WHERE username = ?";
prep = conn.prepareStatement( read );
prep.setString(1, username);

ResultSet rs = (ResultSet) prep.executeQuery();
while(rs.next()) {
user = new User();

   // TODO: set fields
}

return user;
 }

public boolean validate(String username, String password){
User user = null;

Handler handler = new Handler();
Connection conn = handler.getConnection();
PreparedStatement prep;

String read = "Select * from users WHERE username = ? and 
password = ?";

prep = conn.prepareStatement( read );
prep.setString(1, username);
prep.setString(2, password);

ResultSet rs = (ResultSet) prep.executeQuery();

if(rs.next()) {
return true;
}

 return false;
}
}


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Clearing @SessionState

2011-06-06 Thread Rich M

On 06/06/2011 12:48 PM, robnangle wrote:

Rich M wrote:

Most likely your page is not loading and assigning the adminUser boolean
like you are expecting, and after your initial login, it's not calling
any of that code anymore and thus your privileges appear to regress to a
normal user, when really you aren't calculating them at all.
-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


Also it not only appears to regress, it does regress. The logged in user
display name reverts to the previous logged in user..


Fair enough, I was trying to hypothesize at what might be your problem 
based on the small subset of related code shown. But you're right, that 
result does not seem to fit with what I said.


It would be more clear to see what is happening to the User object if we 
could see that code that stores and authorizes the User object before it 
gets to this page where it can be cleared.


Any luck with some debugging messages to verify what methods are getting 
called in between the working and broken states?


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Clearing @SessionState

2011-06-06 Thread Rich M

On 06/06/2011 12:20 PM, robnangle wrote:

Rich M wrote:

On 06/06/2011 12:04 PM, robnangle wrote:

No didn't seem to make a difference im afraid. I cant think of anything
that
would revert the user back to the previous logged in user?

My updated code now looks like:

  @SessionState(create=false)
@Property
private User user;
@Property
private boolean userExists;
@Property
private Transfers transfers;

private boolean adminUser;

Don't know the rest of your code, but if this boolean adminUser
determines whether or not show pages, it should be persisted shouldn't
it? Otherwise the value set here is going to clear. When is
UpdatePoints() called?




Well does it have to be persisted? I call the adminUser() in every class
where it is necessary. The updatePoints() is the constructor so it will be
called when the page is loading?



You might want to refresh your knowledge of the page render lifecycle 
and how pages/components operate in T5, based on your comment here.


http://tapestry.apache.org/page-life-cycle.html

Someone else might be better able to explain, but to my knowledge, a 
page is only constructed a minimal amount of times and re-used within 
the application. The page is not constructed to render a response for a 
request.


You'd be looking to call the logic for a page "loading" or rather being 
requested in the onActivate method, or a render phase like @SetupRender.


As for persisted or not, if you are maintaining a user session in your 
application, might I ask what the point is of recalculating their admin 
status if that never changes within a given session?


http://tapestry.apache.org/persistent-page-data.html

Most likely your page is not loading and assigning the adminUser boolean 
like you are expecting, and after your initial login, it's not calling 
any of that code anymore and thus your privileges appear to regress to a 
normal user, when really you aren't calculating them at all.


You might have an easier time figuring this out using some System.out 
commands or better yet using the built-in logging support @Inject 
private Logger log; and provide a Log4J configuration file in 
src/main/resources





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Clearing @SessionState

2011-06-06 Thread Rich M

On 06/06/2011 12:04 PM, robnangle wrote:

No didn't seem to make a difference im afraid. I cant think of anything that
would revert the user back to the previous logged in user?

My updated code now looks like:

 @SessionState(create=false)
@Property
private User user;
@Property
private boolean userExists;
@Property
private Transfers transfers;

private boolean adminUser;
Don't know the rest of your code, but if this boolean adminUser 
determines whether or not show pages, it should be persisted shouldn't 
it? Otherwise the value set here is going to clear. When is 
UpdatePoints() called?



@Inject
private Request request;

public UpdatePoints() {
transfers = new Transfers();
transfers.getTransferWeek();
transfers.getCloseWeek();
adminUser();
}

public boolean adminUser() {
if(user.getUserType() != null&&
user.getUserType().equalsIgnoreCase("Admin")) {
adminUser = true;
setAdminUser(true);
}
else {
adminUser = false;  
}
return adminUser;
}   

public boolean getAdminUser() {
return adminUser;
}

public void setAdminUser(boolean adminUser) {
this.adminUser = adminUser;
}

public Object onSubmitFromLogout() throws Exception {
user = null;
Session session = request.getSession(false);
if (session != null) {
   session.invalidate();
}
return index;
}


--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Clearing-SessionState-tp4458525p4459081.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Actionlink + action

2011-05-25 Thread Rich M

You should use an eventlink instead.

In that case you can provide an explicit event name that all the links 
can map to, while not having overlapping component Ids.


http://tapestry.apache.org/current/tapestry-core/ref/org/apache/tapestry5/corelib/components/EventLink.html

On 05/25/2011 05:58 PM, degressor wrote:

Hi, I would like to have many actionlinks with different contextes, like:


pdf 
csv
xml
xml

I get the error:

Exception assembling root component of page Report: Exception assembling
embedded component 'linkAnfrage_list' (of type
org.apache.tapestry5.corelib.components.ActionLink, within Report):
Component Report already contains a child component with id
'linkAnfrage_list'. Embedded component ids must be unique (excluding case,
which is ignored).


The links should lead to the same action, but with differen parameters. The
problem is, I generate this links per  some generator and put them to
tapestry. So it is not easy to use t:loop here.

Is there any way to get many links to the same action, with different
parametes in tapestry?


--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Actionlink-action-tp4426703p4426703.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: how can I clear the page context?

2011-05-20 Thread Rich M
You can use the public String onPassivate() function in a Page class to 
alter the context URL posted to the client browser.


For example, I like to use it to beautify the URL so its not the more 
code-y page name it normally would be, and also to mask page names from 
the user so they cannot violate permissions (I do keep track of their 
current page somehow so a refresh doesn't break things for them).


String onPassivate(){
//strip the package prefix and the page class suffix
return selectedComponent.replaceFirst("admin/", 
"").replaceFirst("Tab", "");

}

Hope that helps,
Rich

On 05/20/2011 05:50 PM, Ray Nicholus wrote:

...so that the context is not included after the page initially loads when
I, say, refresh the page via the browser's refresh button?  In other words,
how can I load a page with context parameters once and then discard them so
subsequent refreshes oft hat page do not use these parameters?




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: how to make tapestry ignore processing some paths

2011-05-18 Thread Rich M
Contributions and such should be in the Module class, typically 
AppModule. I believe that was omitted from that code excerpt because the 
rest of the page was in the context of the Module class.


On 05/18/2011 05:02 PM, hese wrote:

Hi,

I dont want tapestry to process some urls, and want it to be handled by
another servlet.

Here - http://tapestry.apache.org/tapestry5/guide/conf.html, it is mentioned
to do it in a method like this...

  public static void contributeIgnoredPathsFilter(Configuration
configuration)
 {
 configuration.add("/dwr/.*");
 }

but where do I write this method?  Should I extend some class and override
this method?

Thanks!


--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/how-to-make-tapestry-ignore-processing-some-paths-tp4407839p4407839.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



X-UA-Compatible & IE 9

2011-05-18 Thread Rich M

Hi,

has anyone else had trouble with getting the X-UA-Compatible meta tag 
working in IE9 with Tapestry?


I have verified that my rendered HTML page has the tag in the  
element, but going into Developer Tools it says the Document Mode for 
the page is not the one I set it to.


The reason I mention it on the list is the following from 
http://msdn.microsoft.com/library/cc288325%28VS.85%29.aspx#SetMode :



The |X-UA-Compatible| header is not case sensitive; however, it must 
appear in the header of the webpage (the HEAD section 
<http://msdn.microsoft.com/en-us/library/ms535252%28v=VS.85%29.aspx>) 
before all other elements except for the title 
<http://msdn.microsoft.com/en-us/library/ms535910%28v=VS.85%29.aspx> 
element and other *meta* elements.



In the rendered HTML, it seems Tapestry places all of the script and 
stylesheet link tags ahead of the meta and title tags I have defined in 
my Layout.tml file. Following the above excerpt, this seems to break the 
rule mentioned about X-UA-Compatible needing to be before all other 
elements except for the title and other meta elements.


I'm trying to force IE8 Document Mode so the Scriptaculous Drag-Drop 
library will work (does not seem to in IE9).


http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
http://www.w3.org/1999/xhtml";>

http://localhost:8080/mparking/assets/1.0/stack/en/core.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/core/scriptaculous_1_8_2/dragdrop.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/ctx/scripts/droppableContent.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/chenillekit/components/datetimefield/datepicker.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/chenillekit/components/datetimefield/datepicker_lang.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/chenillekit/prototype-base-extensions.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/chenillekit/prototype-date-extensions.js</a>>"type="text/javascript">
http://localhost:8080/mparking/assets/1.0/core/default.css>">
http://localhost:8080/mparking/assets/1.0/core/tapestry-console.css>">
http://localhost:8080/mparking/assets/1.0/ctx/layout/main.css>">
http://localhost:8080/mparking/assets/1.0/chenillekit/components/datetimefield/datepicker.css>">


Application





Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Updating only specific divs in Zone update

2011-05-17 Thread Rich M
Thanks, I suppose I should have responded after Thiago mentioned the 
MultiZoneUpdate a few days back, which did solve the problem for me.


In my case, I have each Component using the triggerEvent method of 
Component Resources with a Callback to return the proper 
MultiZoneUpdate. I guess it was hard for me to conceptually understand 
why I'd need a MultiZoneUpdate to update just a single Zone in the way I 
wanted, but it works.


Component

public Object returnZone(){
final Object[] returnObject = new Object[]{null};
Object[] context = new Object[]{zone};

cr.triggerEvent("TriggerZoneUpdate",
context,
new ComponentEventCallback() {
public boolean handleResult(final Object result) {
if (result != null) {
returnObject[0] = result;
}

return result != null;
}
});

return returnObject[0];
}

Containing Page

public Object onTriggerZoneUpdate(Zone zoneForUpdate){
return new MultiZoneUpdate(zoneForUpdate.getClientId(), 
zoneForUpdate);

}

On 05/17/2011 12:23 PM, Mark wrote:

You probably want to build a multizone update to update just the necessary
zones.  Here is a snippet of some of my code that updates zones only if they
are visible in that particular context:

public MultiZoneUpdate getPriceMultiZoneUpdate() {

 MultiZoneUpdate update = new MultiZoneUpdate("totalPriceZone",
totalPriceZone);

 if(isSubtotalVisible()) {

 update = update.add("subtotalZone", subtotalZone);

 }



 if(isDiscountVisible()) {

 update = update.add("totalDiscountsZone", totalDiscountsZone);

 }



 if(isSalesTaxVisible()) {

 update = update.add("totalSalesTaxZone", totalSalesTaxZone);

 }



 if(isFulfillmentFeeVisible()) {

 update = update.add("totalFulfillmentFeeZone",
totalFulfillmentFeeZone);

 }


 return update;




 }




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Hyperlink not becoming hyperlink

2011-05-17 Thread Rich M
If I understand you correctly, you have some information stored in a 
field of your entity that is HTML mark-up for a hyperlink.


For example, a beanedit for the entity class Reference which has a field 
String website which for this entry has an html link like "href="somesite.com">Some Site". If you want that to display as 
markup and not text, you would use the t:value="entity.website" /> which will output it as HTML for you. You 
may need to override the column to insert this into the TML, the 
documentation for beanedit should make it clear how to do that if you 
don't know how.


On 05/17/2011 10:16 AM, TG wrote:

Hi,

This is a newbie question so please bear with me :) I used beanedit to
display HTML. So far I like it, but a column that contains hyperlink, the
values does not "become" a hyperlink that I can click to launch an external
site.

How do I make the values becoming a clickable hyperlink in Tapestry 5? Is
there any easy way? One line code is the best.

Thanks.

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Hyperlink-not-becoming-hyperlink-tp4403607p4403607.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: TAP5-920 rears it's head again in 5.2 with a twist

2011-05-13 Thread Rich M
I've run into this issue now myself, was there ever a resolution to this 
or a workaround? As David said, supply an explicit value encoder isn't 
able to solve the issue for me either.


Thanks,
Rich

On 03/24/2011 10:52 PM, David Rees wrote:

TAP5-920 has long been an issue for one of our applications which uses
composite keys.

https://issues.apache.org/jira/browse/TAP5-920

In the past we have worked around the issue by providing an encoder
with our affected loops.

We are now working on upgrading from 5.1.0.5 to 5.2.4 and have run
into a new problem:

Even if we supply an encoder, the default encoder
(HibernateEntityValueEncoder) gets used and the NPE is back.

Below is a stack trace.  Suggestions?

Caused by: java.lang.NullPointerException
at 
org.apache.tapestry5.internal.hibernate.HibernateEntityValueEncoder.(HibernateEntityValueEncoder.java:53)
at 
org.apache.tapestry5.hibernate.HibernateModule$1.create(HibernateModule.java:104)
at 
org.apache.tapestry5.internal.services.ValueEncoderSourceImpl.getValueEncoder(ValueEncoderSourceImpl.java:48)
at 
$ValueEncoderSource_12eead93780.getValueEncoder($ValueEncoderSource_12eead93780.java)
at 
org.apache.tapestry5.internal.services.ComponentDefaultProviderImpl.defaultValueEncoder(ComponentDefaultProviderImpl.java:124)
at 
$ComponentDefaultProvider_12eead93782.defaultValueEncoder($ComponentDefaultProvider_12eead93782.java)
at 
org.apache.tapestry5.corelib.components.Loop.defaultEncoder(Loop.java:304)
at 
org.apache.tapestry5.corelib.components.Loop$MethodAccess_defaultEncoder_12eead93e34.invoke(Loop$MethodAccess_defaultEncoder_12eead93e34.java)
at 
org.apache.tapestry5.internal.transform.ParameterWorker$InvokeParameterDefaultMethod.advise(ParameterWorker.java:95)

-Dave

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Updating only specific divs in Zone update

2011-05-13 Thread Rich M

Hi,

I'm trying to put together an interactive page with multiple components, 
where each component can go through event/actions.


For example, two components might be account details and reports. In 
account details the initial view is a display of your basic fields and 
their values, but if you select an Edit button, the component will 
change to display a bean edit form.


The challenge I am facing is, when the Edit button is selected, to only 
update the display of the account details component and not alter the 
display of the rest of the page.


At the moment, I have all of the components contained on the page in a 
single Zone. From each component I use event callbacks to call a method 
on the containing Page that will return the zone for the component to 
update in events/actions.


This does not accomplish what I want, as each update call to the 
zone.getBody() will re-render all of the components at once, not just 
the account details.


Alternately, I tried writing a self-contained zone within each 
component, but when I return that on event/action methods from a 
component, it then replaces the rendering of the page with an updated 
rendering of just that component.


I have read about the 't-zone-update' css-class that can be used on a 
DIV within a Zone to isolate the content that actually gets updated, but 
I can't see how that will get me to where I want. Any guidance would be 
much appreciated.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Using JavascriptSupport addInitializerCall

2011-05-10 Thread Rich M

Hi,

I'm trying to leverage some of scriptaculous in a new application I'm 
working on. I've got the @Import worked out for including the modules of 
scriptaculous I want, but I'm having a hard time grasping how to create 
and use some Javascript libraries I create in my pages.


The first simple step I wanted to take was to make a standard  
always a Droppable using my Layout page. I made a JS file that has a 
basic function to add this div to the Droppables, but I'm not sure how 
to get it to run when the page initializes, Firebug debugging is 
verifying it does not get called, but I cannot figure it out beyond that.


I tried the following:

@Import(stylesheet="context:layout/main.css",library={"${tapestry.scriptaculous}/dragdrop.js","${tapestry.scriptaculous}/effects.js","context:scripts/droppableContent.js"})

public class Layout {

@Inject
private JavaScriptSupport jsl;

public void setupRender(){
jsl.addInitializerCall("createDroppable()",""); //Make the 
Right Content area always droppable

}

}


droppableContent.js:

function createDroppable() {
Droppables.add('rightContent');
alert('added RightContent to droppables');
}

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry 5.2.5 Select component's multiple property

2011-04-15 Thread Rich M

I believe you would do 

It's just like any custom component you might make that has a package 
beyond *.components, you write out the extra packages in front of the 
component class name to qualify it.


I checked my code and I guess I also do it a different way:

model="pageListModel" encoder="pageListModel"/>


@Property @Persist
private GenericMultipleSelectModel pageListModel;

@Component
private MultipleSelect mselect;

@Property @Persist
private List pageList;



On 04/15/2011 12:52 PM, TG wrote:

Ok that helps. Installed 1.3.2 but how do I use it in the .tml file? What is
the namespace I need to import?

I asked as I still have the same not found error i.e.

Caused by: org.apache.tapestry5.ioc.internal.util.TapestryException: Unable
to resolve 'MultipleSelect' to a component class name. [at
classpath:tapp/.../...(truncated for simplicity).../pages/UserSave.tml, line
18]
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.startComponent(PageLoaderImpl.java:743)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.component(PageLoaderImpl.java:627)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:426)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.consumeToEndElementAndPopBodyElement(PageLoaderImpl.java:611)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.parameter(PageLoaderImpl.java:559)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:443)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.component(PageLoaderImpl.java:648)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:426)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.element(PageLoaderImpl.java:687)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:421)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.component(PageLoaderImpl.java:648)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.processTemplateToken(PageLoaderImpl.java:426)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.programAssembler(PageLoaderImpl.java:264)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl.access$900(PageLoaderImpl.java:65)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$4.invoke(PageLoaderImpl.java:236)
at
org.apache.tapestry5.internal.pageload.PageLoaderImpl$4.invoke(PageLoaderImpl.java:220)
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
... 84 more
Caused by: org.apache.tapestry5.ioc.util.UnknownValueException: Unable to
resolve 'MultipleSelect' to a component class name.

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-5-2-5-Select-component-s-multiple-property-tp4304338p4306041.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry 5.2.5 Select component's multiple property

2011-04-15 Thread Rich M

You want ChenilleKit 1.3.2, 1.1.0 is for older version of Tapestry.

On 04/15/2011 12:26 PM, TG wrote:

I do not use maven2. But I downloaded chenillekit-tapestry-1.1.0.jar
manually, installed, run again and I got a new error during bootup -

Caused by: java.lang.ClassNotFoundException:
org.apache.tapestry5.internal.services.RequestPathOptimizer

Seems like RequestPathOptimizer is not part of Tapestry 5.2.5 anymore? What
version of Tapestry do you use?


--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-5-2-5-Select-component-s-multiple-property-tp4304338p4305974.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Absolute Paths in Tapestry 5.2.5

2011-04-13 Thread Rich M
We faced problems with the root and app contexts using HTTPD/Apache in 
front of a Servlet Container as well at my company. Our solution was as 
follows, all in HTTPD. I thought I'd post this in case you find it 
useful. You will probably be interested in the lines from ssl.conf (if 
you don't use HTTPS then put in the httpd.conf). If you run more than 
just the myApp on the server, you'd need a RewriteCond(s) to exempt your 
other apps/pages from the rewrite:


httpd.conf (forces HTTPS and maps to the servlet port on requests to the 
app context):


RewriteEngine On
RewriteCond %{HTTPS} "off"
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

ProxyRequests Off


Order deny,allow
Allow from all


ProxyPass /myApp http://localhost:8080/myApp
ProxyPassReverse /myApp http://localhost:8080/myApp

ssl.conf (maps requests not to the app, such as root, to the app context):

RewriteEngine On
RewriteRule !^/myApp https://%{HTTP_HOST}/myApp%{REQUEST_URI}


On 04/13/2011 12:04 PM, Jochen Heintz wrote:

Hi,

i am tried this in AppModule :

  public static void contributeAlias(Configuration configuration)
 {
 BaseURLSource source = new BaseURLSource()
 {
 public String getBaseURL(boolean secure)
 {
 return "http://";;
 }
 };
 configuration.add(AliasContribution.create(BaseURLSource.class,
source));
 }

but the method getBaseURL gets never called. Did i missed something.

Thanks
Jochen

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Absolute-Paths-in-Tapestry-5-2-5-tp4300824p4300975.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Object creator set to null..

2011-04-11 Thread Rich M
For trivia it's worth noting that the String equals and equalsIgnoreCase 
methods also return false on null inputs, so you can also write:


if("Admin".equalsIgnoreCase( user.getUserType() )) {
 ...
}


On 04/08/2011 08:51 AM, robnangle wrote:

Richard Hill-7 wrote:

Well you can't call a method on null! null is not a String with value
"null". It's a special value in java - basically a reference to a value
called null (i.e distinct from an undefined variable that has no
reference assigned). You need to check for a null value before calling
any methods:

if(user.getUserType() != null&&
user.getUserType().equalsIgnoreCase("Admin")) {






On Fri, 2011-04-08 at 05:38 -0700, robnangle wrote:

Richard Hill-7 wrote:

You don't say what line your getting your npe but I'm guessing it's
this:

if(user.getUserType().equalsIgnoreCase("Admin")

if .getUserType() is null as you imply it can be then
calling .equalsIgnorecase() is going to result in an npe.


Ye thats the line im getting it on. Yes everybodys userType will be null
after the first user who was set to Admin. How do I get around this or is
it
possible?

I thought you could just:

public boolean adminUser() {
if(user.getUserType().equalsIgnoreCase("Admin")) {
adminUser = true;
setAdminUser(true);
}
else if(user.getUserType().equalsIgnoreCase(null)) {
adminUser = false;  
}
return adminUser;
}   

However it never goes by the first if when the user is not an admin
user..


--
View this message in context:
http://tapestry.1045711.n5.nabble.com/Object-creator-set-to-null-tp4290653p4290718.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


Of course.. Cheers

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Object-creator-set-to-null-tp4290653p4290738.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Implementation mixin and persistence

2011-04-06 Thread Rich M
Amazing, thanks for the example here. My implementation isn't exactly 
the same, but your code example made the concept quite clear and I've 
got it working now. Thanks!


On 04/06/2011 01:14 PM, Taha Hafeez wrote:

Dear Rich

I tried to implement what you desired ( to the best of my understanding)

this is it

import org.apache.tapestry5.ClientElement;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;

@Import(library = "show-hide.js")
public class ShowHide {
@Parameter(required = true)
private boolean state;

@InjectContainer
private ClientElement element;

@Inject
private ComponentResources resources;

@Environmental
private JavaScriptSupport javaScriptSupport;

void afterRender(){
   Link link = resources.createEventLink("showHide");
   JSONObject spec = new JSONObject();
   spec.put("url", link.toAbsoluteURI());
   spec.put("id", element.getClientId());
   spec.put("status", state);
   javaScriptSupport.addScript("new ShowHide(%s);", spec);
}

void onShowHide(boolean state){
   System.out.println("Old state = " + this.state + " new state = " +
state);
   this.state = state;
}
}

The javascript... (it is not doing anything fancy, just basic
implementation)

ShowHide = Class.create( {
initialize : function(spec) {
   $(spec.id).status = spec.status;
   Event.observe(spec.id, "click", function() {
  if (!this.status) {
 this.status = true;
  } else {
 this.status = !this.status;
  }
  Tapestry.ajaxRequest(spec.url + "/" + this.status, function() {
 if($(spec.id).status){
$(spec.id).show();
 }else {
$(spec.id).hide();
 }
  });
   });
}
});


This is the component using this mixin as implementation mixin

import net.jkbank.dc.ticket.mixins.ShowHide;

import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.ClientElement;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.Mixin;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.services.javascript.JavaScriptSupport;

public class Div implements ClientElement {
@Parameter(value = "prop:componentResources.id", defaultPrefix =
BindingConstants.LITERAL)
private String clientId;

@SuppressWarnings("unused")
@Mixin
private ShowHide showHide;

private String assignedClientId;

@Environmental
private JavaScriptSupport javaScriptSupport;

void setupRender(){
   assignedClientId = javaScriptSupport.allocateClientId(clientId);
}

void beginRender(MarkupWriter writer){
   writer.element("div", "id", getClientId());
}

void afterRender(MarkupWriter writer){

   writer.end();
}

public String getClientId() {
   return assignedClientId;
}

}

This is the usage in a template file



   
   This is some text
   



public class TestPage {
@Persist
@Property
private boolean state;
}


regards
Taha

On Wed, Apr 6, 2011 at 10:35 PM, LLTYK  wrote:


Last time I did this I used a javascript cookie api.

--
View this message in context:
http://tapestry-users.832.n2.nabble.com/Implementation-mixin-and-persistence-tp6243796p6246820.html
Sent from the Tapestry Users mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Implementation mixin and persistence

2011-04-06 Thread Rich M
Thanks Josh, you are right. Using the Prototype Ajax.request object 
solved the problem (as it does include that header) and is easier to use 
anyway. Thanks for the tip.


On 04/06/2011 12:51 PM, Josh Canfield wrote:

When this is executed, it triggers the event method properly in the Java
Page class, but it also triggers the render cycle in the page class as well,
as far as my logs indicate.

Sounds like tapestry isn't detecting that you are doing XHR. It's
detected based on an HTTP header "X-Requested-With" set to
"XMLHttpRequest". I believe this is supplied by jquery and prototype,
not the base object provided by the browser.


Josh

On Wed, Apr 6, 2011 at 9:11 AM, Rich M  wrote:

To add, I'm not sure creating a pure XHR request is working out quite how I
might have expected. The following javascript snippet:

var request = false;
try {
  request = new XMLHttpRequest();

  var url = "/ViewTransactionsTab:HideShow/" + escape(hide);

  request.open("GET", url, true);
  request.send(null);

} catch (failed) {
  request = false;
}

and the Java Page class snippet:

@Property @Persist
  private Boolean hide;

  void onHideShow(boolean hidden){

 debug("In onHideShow. Hidden: " + hidden);

 hide = hidden;
  }

When this is executed, it triggers the event method properly in the Java
Page class, but it also triggers the render cycle in the page class as well,
as far as my logs indicate. I don't believe this rendering is relayed to the
client, but it doesn't seem right either. This code was loosely based off of
http://tapestry.markmail.org/thread/fc2hubsb6dd6hait

On 04/06/2011 11:49 AM, Rich M wrote:

Thanks, that was an interesting read, but it doesn't help solve my
problem. I still don't see how I would pass a persisted property-bound
parameter to the implementation mixin. The only related code I've seen is
like

@Component(parameters={"hidden=hide"})

but using that like this doesn't work for obvious reasons, since its a
Mixin not a Component

@Component(parameters={"hidden=hide"}) @Mixin("HideShowSearch")
private HideShowSearch hss;



On 04/05/2011 08:51 PM, Taha Hafeez wrote:

Hi

There was a discussion related to 'Parameters in Implementation
Mixins'...

http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html

Hope it helps


<http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html>
regards
Taha

On Wed, Apr 6, 2011 at 2:22 AM, Rich Mwrote:


Hi,

I have a Page and it has a search form, contained within an ID'ed DIV. I
made an implementation mixin that initializes an Event observer on the
on
click event of a 'button' in the Page's HTML. The event triggers
javascript
that hides/shows the search form.

That works fine, but I want to add functionality so there is persistence
of
the hide/show state between page refreshes. Documentation recommends to
delegate persistence to the container using parameters, but I haven't
seen
any documentation that indicates it is possible to use parameters on an
implementation mixin. At any rate, what would be the concept to
achieving
this, having the javascript hide/show event return an XHR request to the
server that it in turn uses to set the persistent field?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Implementation mixin and persistence

2011-04-06 Thread Rich M
To add, I'm not sure creating a pure XHR request is working out quite 
how I might have expected. The following javascript snippet:


var request = false;
try {
  request = new XMLHttpRequest();

  var url = "/ViewTransactionsTab:HideShow/" + escape(hide);

  request.open("GET", url, true);
  request.send(null);

} catch (failed) {
  request = false;
}

and the Java Page class snippet:

@Property @Persist
 private Boolean hide;

 void onHideShow(boolean hidden){

 debug("In onHideShow. Hidden: " + hidden);

 hide = hidden;
 }

When this is executed, it triggers the event method properly in the Java 
Page class, but it also triggers the render cycle in the page class as 
well, as far as my logs indicate. I don't believe this rendering is 
relayed to the client, but it doesn't seem right either. This code was 
loosely based off of http://tapestry.markmail.org/thread/fc2hubsb6dd6hait


On 04/06/2011 11:49 AM, Rich M wrote:
Thanks, that was an interesting read, but it doesn't help solve my 
problem. I still don't see how I would pass a persisted property-bound 
parameter to the implementation mixin. The only related code I've seen 
is like


@Component(parameters={"hidden=hide"})

but using that like this doesn't work for obvious reasons, since its a 
Mixin not a Component


@Component(parameters={"hidden=hide"}) @Mixin("HideShowSearch")
private HideShowSearch hss;



On 04/05/2011 08:51 PM, Taha Hafeez wrote:

Hi

There was a discussion related to 'Parameters in Implementation 
Mixins'...
http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html 



Hope it helps

<http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html> 


regards
Taha

On Wed, Apr 6, 2011 at 2:22 AM, Rich M  wrote:


Hi,

I have a Page and it has a search form, contained within an ID'ed 
DIV. I
made an implementation mixin that initializes an Event observer on 
the on
click event of a 'button' in the Page's HTML. The event triggers 
javascript

that hides/shows the search form.

That works fine, but I want to add functionality so there is 
persistence of

the hide/show state between page refreshes. Documentation recommends to
delegate persistence to the container using parameters, but I 
haven't seen

any documentation that indicates it is possible to use parameters on an
implementation mixin. At any rate, what would be the concept to 
achieving
this, having the javascript hide/show event return an XHR request to 
the

server that it in turn uses to set the persistent field?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Implementation mixin and persistence

2011-04-06 Thread Rich M
Thanks, that was an interesting read, but it doesn't help solve my 
problem. I still don't see how I would pass a persisted property-bound 
parameter to the implementation mixin. The only related code I've seen 
is like


@Component(parameters={"hidden=hide"})

but using that like this doesn't work for obvious reasons, since its a 
Mixin not a Component


@Component(parameters={"hidden=hide"}) @Mixin("HideShowSearch")
private HideShowSearch hss;



On 04/05/2011 08:51 PM, Taha Hafeez wrote:

Hi

There was a discussion related to 'Parameters in Implementation Mixins'...
http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html

Hope it helps

<http://tapestry.1045711.n5.nabble.com/Parameters-in-implementation-mixins-td3395407.html>
regards
Taha

On Wed, Apr 6, 2011 at 2:22 AM, Rich M  wrote:


Hi,

I have a Page and it has a search form, contained within an ID'ed DIV. I
made an implementation mixin that initializes an Event observer on the on
click event of a 'button' in the Page's HTML. The event triggers javascript
that hides/shows the search form.

That works fine, but I want to add functionality so there is persistence of
the hide/show state between page refreshes. Documentation recommends to
delegate persistence to the container using parameters, but I haven't seen
any documentation that indicates it is possible to use parameters on an
implementation mixin. At any rate, what would be the concept to achieving
this, having the javascript hide/show event return an XHR request to the
server that it in turn uses to set the persistent field?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Implementation mixin and persistence

2011-04-05 Thread Rich M

Hi,

I have a Page and it has a search form, contained within an ID'ed DIV. I 
made an implementation mixin that initializes an Event observer on the 
on click event of a 'button' in the Page's HTML. The event triggers 
javascript that hides/shows the search form.


That works fine, but I want to add functionality so there is persistence 
of the hide/show state between page refreshes. Documentation recommends 
to delegate persistence to the container using parameters, but I haven't 
seen any documentation that indicates it is possible to use parameters 
on an implementation mixin. At any rate, what would be the concept to 
achieving this, having the javascript hide/show event return an XHR 
request to the server that it in turn uses to set the persistent field?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Generating popup window after form success

2011-03-30 Thread Rich M

Hi,

I'm wondering if there is a good strategy to create a popup window after 
a successful form submit. The concept here is to popup a Voucher/Coupon 
window for the user if they complete a successful purchase.


I've researched the basics of the concept in terms of HTML forms. You 
can run some Javascript to open a new window on submission of an HTML 
form. I'd like to be able to limit this functionality to only occur if 
the transaction is successful, in other words after the onSuccess method 
has run. Is there any means to fire javascript at this stage before a 
page refresh, or should I be looking rather at persisted fields and 
conditionally executing the javascript on page rending after the 
onSuccess method invokes a re-render of the page?


Looking at the Event constants in the tapestry.js, I didn't immediately 
see an event beyond prepare/validate for forms that I might observe.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: BeanEditForm: What's happening to my object parameter?

2011-03-22 Thread Rich M

On 03/22/2011 05:10 PM, Thiago H. de Paula Figueiredo wrote:

On Tue, 22 Mar 2011 17:53:12 -0300, Rich M  wrote:

Okay, maybe I'm not interpreting the page lifecycle properly here, or 
it has changed it some way that is causing me problems? The entity is 
referenced and loaded properly in onPrepareForRender. Considering 
that BeanEditor only changes the value of the edited property if it's 
null, then what could be causing the private entity field to become 
set to null between onPrepareForRender and the coupling/rendering of 
the BeanEditor? I have no direct statements doing as much in my code.


Why don't you use onPrepare() instead of onPrepareForRender()?
Same result, unfortunately. I switched to onPrepareForRender eventually 
because onPrepare gets called 2-3 times during the page lifecycle while 
onPrepareForRender only once. It didn't break anything back in 5.1.0.15 
so it seemed like a good idea. I wanted to avoid extra DB calls and 
array/String parsing. On another note, I'm not sure whether this problem 
even relates to the @Environmental object at all, but I did figure I'd 
mention it before just in case.


Anyway, here is what is happening:

@Property @Persist
private ThirdParty tp;
@Persist @Property
private ThirdParty tp2;
@Persist
private ThirdParty tp3;

public void onPrepare(){
ThirdParty tp = tpdao.read( id.getId() );

// perform field parsing for overridden BeanEditForm blocks

ThirdParty tp2 = tp.clone();
ThirdParty tp3 = tp.clone();

log.debug("In onPrepare: tp = " + tp);
}

public void afterRender(){
log.debug("tp: " + tp + "\n tp2: " + tp2 + "\n tp3: " + tp3);
}

TML:


Results:

In onPrepare: tp = person; name = person
In onPrepare: tp = person; name = person
tp: id = person; name = person
tp2: id = null; name = null
tp3: id = person; name = person




In response to the Environment vs. Component Parameters, these are 
all Pages not Components. Actually this structure and exact use was 
discussed in this ( 
http://tapestry.markmail.org/thread/4rffky2r2uqno5ea#query:+page:1+mid:j375h7obo6hd2i6b+state:results 
) previous thread.


I remember that. :) Yep, you need the Environment here.




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: BeanEditForm: What's happening to my object parameter?

2011-03-22 Thread Rich M

On 03/22/2011 02:50 PM, Thiago H. de Paula Figueiredo wrote:

Hi!

BeanEditor, which is used inside BeanEditForm, only changes the value 
of the edited property if it's null, so the problem should be 
elsewhere. By the way, why are you using the Environment instead of 
component parameters? And what do you call a subpage?


Okay, maybe I'm not interpreting the page lifecycle properly here, or it 
has changed it some way that is causing me problems? The entity is 
referenced and loaded properly in onPrepareForRender. Considering that 
BeanEditor only changes the value of the edited property if it's null, 
then what could be causing the private entity field to become set to 
null between onPrepareForRender and the coupling/rendering of the 
BeanEditor? I have no direct statements doing as much in my code.


In response to the Environment vs. Component Parameters, these are all 
Pages not Components. Actually this structure and exact use was 
discussed in this ( 
http://tapestry.markmail.org/thread/4rffky2r2uqno5ea#query:+page:1+mid:j375h7obo6hd2i6b+state:results 
) previous thread. In trying to mentally recall the justification, I 
believe the intent is that there is a two-way relationship on the 
@Environmental PageId id between the container page and the 'subpage'. 
The subpage term here means that there is the container page with the 
Grid, and then the subordinate page (loaded via Delegate in container) 
with the BeanEditForm. By two-way relationship, I mean that the GridPage 
can manipulate the PageId so that a SubPage can load the correct Entity, 
and going the other way, the SubPage can reset the PageId in the 
environment in the event that the user deletes the Entity so the 
GridPage is aware.


Maybe I just need to completely re-evaluate my approach here, perhaps my 
prior implementation worked by miracle rather than design (I've been 
forced to learn and seriously develop Tapestry concurrently. 
Component-driven design over Page-driven design wasn't quite in my 
repertoire back in August). Before I invest time into that though, I 
want to verify that there isn't some easy adjustment to my existing code 
to restore functionality.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



BeanEditForm: What's happening to my object parameter?

2011-03-22 Thread Rich M

Hi,

I upgraded my application to 5.2.4 and everything seemed great, but I 
eventually noticed some weird behavior regarding some functionality that 
previously worked in my application.


I have a page that displays Entities in a Grid. Each row has a link that 
triggers an event with the context of the given entity ID. At this 
point, the page stores the id in a persisted Object called PageId, and 
sets a boolean to conditionally delegate/render a sub-page in the 
template. In @BeginRender, the PageId is pushed into the environment. 
The sub-page provides a BeanEditForm for the given Entity object so a 
user can update information.


The sub-page uses @Environmental on a PageId object to grab the one 
pushed on the stack from the Grid page. In onPrepareForRender, an Entity 
object is loaded from the DB based on the value in the PageId. 
Everything is good so far. The Entity object is @Property and @Persist 
annotated. At the end of the onPrepareForRender method, the Entity is 
set properly. However, it seems to get de-referenced at some point 
between that method and AfterRender. I put a debug message in 
AfterRender and the entity object is no longer referencing the expected 
values. Strangely enough, if I define @Persist Entity entity2 and write 
entity2 = entity.clone() in the onPrepareForRender method, in 
AfterRender, entity2 is still the expected Entity object...


After some further prodding, I found out that whichever entity object is 
set as the object parameter of the BeanEditForm is being re-initialized 
as if it was assigned = new Entity(). This is breaking my page because I 
have been using the entity object to 'initialize' the BeanEditForm 
fields to the stored values of the entity. Since the entity ends up 
re-initialized during rendering, none of the previously stored fields 
are available for a user to see and edit.


What is happening to the entity object, I thought BeanEditForm was 
supposed to use it if it was an initialized property (enforced in the 
container in a "prepare" event)? The first time the Entity link is 
clicked on the GridPage, the entity object ends up null. The second time 
as well. The third time, it displays whatever the previous link should 
have displayed and continues in this fashion indefinitely. I'd assume I 
must have some flawed logic here somewhere, but it is a bit baffling 
that it used to work in 5.1.




Simplified code example:

GridPage.java

@Inject
private Environment env;
@Persist
private String subPage;
@Persist @Property
private PageId id;
@Persist @Property
private boolean subtabSelect;

public Object onActionFromDetailsLink(String cid){
subtabSelect = true;

this.subPage = DETAILS_TAB;
id = new PageId(cid);
debug("DetailsLink clicked. SubPageId set to " + this.subPage);
...
}

@BeginRender
public void pushPageId(){
debug("Loaded ViewTPTab and SubPageId = " + this.id);
env.push(PageId.class, id);
}

@AfterRender
public void  popPageId(){
this.id = env.pop(PageId.class);
}



DetailsTab.java:

@Environmental
private PageId id;


@Inject
private Environment env;

@Property @Persist
private ThirdParty tp;
@Persist
private ThirdParty tp2;

@Inject
private TPDAO tpdao;

public void onPrepareForRender(){

tp = (ThirdParty) tpdao.read(id.getId());

/*   pull some info from the tp object, parse and place 
into Persisted fields. These fields are the only ones displayed properly 
in the BeanEditForm. BeanEditForm is referencing the tp object. */


tp2 = tp.clone();
debug("In onPrepareForRender of DetailsTab. Loaded ::"+tp+":: 
from DB");

}

public void afterRender(){
debug("In afterRender... the TP object is : " + tp ); //tp is null
debug("... tp2 : " + tp2); //tp2 = tpdao.read(id.getId())
}

void onPrepareForSubmit(){
env.push(PageId.class, heldId); //push back into environment on 
submit from BeanEditForm

}

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: 5.1 : Available pages downgrade

2011-03-21 Thread Rich M
Thanks for the replies so far, they have been helpful. I will be looking 
into both the application server's maintenance of the /tmp folder - 
where it does seem Jetty is unpacking the WAR - as well as the memory 
usage of the application and optimizations for that.


The production version is frozen at 5.1.0.15 unfortunately, but I 
recently begun development on the next release version. That, coinciding 
with the release of ChenilleKit for 5.2.4, has allowed me to 
successfully upgrade the next version to 5.2.4, which I'm very excited 
about.


Thanks,
Rich

On 03/21/2011 02:17 PM, Thiago H. de Paula Figueiredo wrote:
Using 5.2.4 will help, as the memory consumption is lowered by not 
using a page pool anymore.


On Mon, 21 Mar 2011 14:51:01 -0300, Kalle Korhonen 
 wrote:



I can confirm I've seen similar behavior on Jetty. It's linked to heap
space running out and in my case it was directly related to sending
huge amounts gzipped form data. See related Jetty issue at
http://jira.codehaus.org/browse/JETTY-1167 and my comments there.
Apparently Jetty in some cases shuts down the application in order to
keep the container running, after which you'd see the behavior you
described. Adjust jvm settings and allocate more memory to your
process. Allocate enough until the whole process dies (if you are on
Linux platform - especially virtualized with no swap space, the OOM
killer will shut down the JVM way before your process consumes all of
the available RAM). Then investigate if any of your forms are
reserving a high amount of memory, possibly play with other JVM
settings and *if* you are sending a lot of gzipped data, turn gzipping
off and see if it makes a difference.

Kalle


On Mon, Mar 21, 2011 at 8:21 AM, Rich M  wrote:

Hi,

I've been running a production version of a tapestry application for a
couple months now. Just the other day it was reported to me that the
application was no longer resolving pages normally, but instead 
displaying a

directory view from the root context.

Restarting the application solved the problem, but I'm at a loss as 
to the

cause. Looking through the application logs, the only unusual logging I
noticed was that sometime during the timeframe in which the problem was
expected to occur, the TapestryModule.ComponentClassResolver fired 
off 3

lines of logging similar to when you execute the start-up of a Tapestry
application.

Namely, it displayed lists of available pages, available components, 
and
available mixins. The list of available pages was significantly 
reduced from

the actual pages within the application. It seemed like an at-random
mini-subset of the actual pages in the application. There is nothing to
indicate someone had tried to start/restart the application again or
anything along those lines.

Considering the minimal amount of information I have at hand, I was 
curious
to know if this ComponentClassResolver issue might look familiar to 
anyone?
Or perhaps at least an idea of what might cause the 
ComponentClassResolver
to behave as it had so I can follow up with a code review of my 
application?

I run the application in a standalone Jetty 6.1.26 as a WAR deployment.

Thanks,
Rich


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org







-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



5.1 : Available pages downgrade

2011-03-21 Thread Rich M

Hi,

I've been running a production version of a tapestry application for a 
couple months now. Just the other day it was reported to me that the 
application was no longer resolving pages normally, but instead 
displaying a directory view from the root context.


Restarting the application solved the problem, but I'm at a loss as to 
the cause. Looking through the application logs, the only unusual 
logging I noticed was that sometime during the timeframe in which the 
problem was expected to occur, the TapestryModule.ComponentClassResolver 
fired off 3 lines of logging similar to when you execute the start-up of 
a Tapestry application.


Namely, it displayed lists of available pages, available components, and 
available mixins. The list of available pages was significantly reduced 
from the actual pages within the application. It seemed like an 
at-random mini-subset of the actual pages in the application. There is 
nothing to indicate someone had tried to start/restart the application 
again or anything along those lines.


Considering the minimal amount of information I have at hand, I was 
curious to know if this ComponentClassResolver issue might look familiar 
to anyone? Or perhaps at least an idea of what might cause the 
ComponentClassResolver to behave as it had so I can follow up with a 
code review of my application? I run the application in a standalone 
Jetty 6.1.26 as a WAR deployment.


Thanks,
Rich


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry 5 - cache issue when accessed via proxy

2011-03-16 Thread Rich M

On 03/16/2011 01:48 PM, sunmoor007 wrote:

Hi Rich

Thanks. I understood the implementation of listener but i was looking at a
way to integrate it so that all URL's in app gets modified. I understand
that in app module we can plugin any service. Assume i have a impl class
implementing the listener interface, how will i integrate it into existing
application so that all URL's have a dynamic parameter, say system time in
milliseconds appended to the url.

Referencing these lines from ClientPersistentFieldStorageImpl.java:

135 public void updateLink(Link link)
136 {
137 refreshClientData();
138 
139 if (clientData != null) link.addParameter(PARAMETER_NAME, clientData);
140 }


You can see that the Link object has an addParameter function. You 
should be able to use this to add the system time to the URL as a 
parameter, from my understanding. Since you understand the 
implementation of listener, then that should be pretty simple.


It seems the last challenge you are facing is how you should setup your 
implementation of the listener in the Module so it will be used on link 
creation. That is a little bit beyond my scope of knowledge here, so 
I'll defer that answer to someone else.



The reason am trying to add the system time is to ensure that everytime a
dynamic value is appended to url and hence proxy server wont cache and show
me stale data which is currently happening.

Thanks
Sundar

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-5-cache-issue-when-accessed-via-proxy-tp3388994p3790608.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry 5 - cache issue when accessed via proxy

2011-03-16 Thread Rich M
The following is an internal Tapestry implementation of 
LinkCreationListener and a related class that the implementation makes 
use of. Maybe this can help you get on your way.



http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java?view=markup

http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java?view=markup

On 03/16/2011 10:26 AM, sunmoor007 wrote:

Hi Thiago

Thanks again for your response.

Will definitely try using LinkCreationListener/LinkCreationHub . Is it
something which needs to be integrated in AppModule. I am relatively very
new to Tapestry. Would really appreciate if you can provide a sample
implementation for LinkCreationListener.

Thanks
Sundar

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Tapestry-5-cache-issue-when-accessed-via-proxy-tp3388994p3782668.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Grid Header Override and Sorting

2011-03-15 Thread Rich M
Apologies for the rambling here. It occurred to me that I could 
implement the Link class to return in the event handler. So, I made an 
implementation that will return a URI to the grid.columns:sort event as 
stated, and everything works nicely.


It still feels like a dirty approach though, if anyone agrees and can 
point me towards a more conceptually sound implementation strategy, I'm 
all ears.


Thanks,
Rich

On 03/15/2011 12:23 PM, Rich M wrote:

On 03/14/2011 02:14 PM, Rich M wrote:

Hi,

I found this thread 
http://tapestry.markmail.org/thread/ighytyllingci364 that referenced 
overriding the grid header ala  ... 
, but it seems there was no response. I'm working 
on overriding the headers for most of the grids in my application to 
use built in search fields rather a separate search form. However, 
when I override the Cell Headers the standard sorting link and icon 
is understandably gone.


Does Tapestry provide any means to include the sorting back into a 
Cell Header override. If not, what am I looking at in terms of 
replacing it? I noticed the sort links point to the 
.grid.columns:sort/ event. Can I possibly create a Link 
pointing to this event with the appropriate columnName and have it 
working?


I was able to create a Component that takes the columnName as a 
parameter, writes out an  with the href pointing to 
.grid.columns:sort/columnName. The  has a nested  tag that 
pulls its src attribute from a getSortIcon method that returns of of 
three Assets Injected into the page class corresponding to the same 
Tapestry icons. Beyond seeming like a hacky component, I don't see how 
I can manage the image state as it changes from sortable, ascending, 
and descending since there is no event to handle on a basic .


Ideally I could use an action or event link instead allowed me to 
handle events and change state properly, but to do this I'd need some 
way of bubbling the event through the grid.columns Sort event, and I 
haven't been able to find a way to do that yet. The best idea I could 
come up with was the following, but I'm not surprised it doesn't work. 
To my understanding the triggerEvent will bubble up from the component 
to the containing page up through any more pages.. but the Grid 
wouldn't be along that path. (I replaced the  with a  
to try this, the event fires and the icon updates, but the sort method 
on the grid is never called and returnObject[0] is null).


Code:

@Inject
private ComponentResources cr;

public Object onSortClick(){
final Object[] returnObject = new Object[]{null};
Object[] ctx = new Object[]{ property };

cr.triggerEvent("sort",
ctx,
new ComponentEventCallback() {
public boolean handleResult(final Object 
result) {

if (result != null) {
returnObject[0] = result;
}

return result != null;
}
});

log.debug("returnObject[0]: " + returnObject[0]);

//Changes a @Persist enum that controls a switch for returning 
the proper Sort Icon Asset

getNextSortState();

return returnObject[0];
}




Alternately, I'm looking at GridColumns and wonder if it is possible 
to extend that Component. I'm unsure of how I would use it with a 
grid though.


Worst-case scenario I'm imagining is writing an EventLink per Header 
and writing custom event handlers that manipulate the data set 
provided via Property to the source attribute of the Grid. That seems 
messy and like a lot of work, though. I can't think of how that could 
be encapsulated into a re-usable Component.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Grid Header Override and Sorting

2011-03-15 Thread Rich M

On 03/14/2011 02:14 PM, Rich M wrote:

Hi,

I found this thread 
http://tapestry.markmail.org/thread/ighytyllingci364 that referenced 
overriding the grid header ala  ... 
, but it seems there was no response. I'm working 
on overriding the headers for most of the grids in my application to 
use built in search fields rather a separate search form. However, 
when I override the Cell Headers the standard sorting link and icon is 
understandably gone.


Does Tapestry provide any means to include the sorting back into a 
Cell Header override. If not, what am I looking at in terms of 
replacing it? I noticed the sort links point to the 
.grid.columns:sort/ event. Can I possibly create a Link 
pointing to this event with the appropriate columnName and have it 
working?


I was able to create a Component that takes the columnName as a 
parameter, writes out an  with the href pointing to 
.grid.columns:sort/columnName. The  has a nested  tag that pulls 
its src attribute from a getSortIcon method that returns of of three 
Assets Injected into the page class corresponding to the same Tapestry 
icons. Beyond seeming like a hacky component, I don't see how I can 
manage the image state as it changes from sortable, ascending, and 
descending since there is no event to handle on a basic .


Ideally I could use an action or event link instead allowed me to handle 
events and change state properly, but to do this I'd need some way of 
bubbling the event through the grid.columns Sort event, and I haven't 
been able to find a way to do that yet. The best idea I could come up 
with was the following, but I'm not surprised it doesn't work. To my 
understanding the triggerEvent will bubble up from the component to the 
containing page up through any more pages.. but the Grid wouldn't be 
along that path. (I replaced the  with a  to try this, 
the event fires and the icon updates, but the sort method on the grid is 
never called and returnObject[0] is null).


Code:

@Inject
private ComponentResources cr;

public Object onSortClick(){
final Object[] returnObject = new Object[]{null};
Object[] ctx = new Object[]{ property };

cr.triggerEvent("sort",
ctx,
new ComponentEventCallback() {
public boolean handleResult(final Object result) {
if (result != null) {
returnObject[0] = result;
}

return result != null;
}
});

log.debug("returnObject[0]: " + returnObject[0]);

//Changes a @Persist enum that controls a switch for returning 
the proper Sort Icon Asset

getNextSortState();

return returnObject[0];
}




Alternately, I'm looking at GridColumns and wonder if it is possible 
to extend that Component. I'm unsure of how I would use it with a grid 
though.


Worst-case scenario I'm imagining is writing an EventLink per Header 
and writing custom event handlers that manipulate the data set 
provided via Property to the source attribute of the Grid. That seems 
messy and like a lot of work, though. I can't think of how that could 
be encapsulated into a re-usable Component.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Grid Header Override and Sorting

2011-03-14 Thread Rich M

Hi,

I found this thread http://tapestry.markmail.org/thread/ighytyllingci364 
that referenced overriding the grid header ala  ... 
, but it seems there was no response. I'm working on 
overriding the headers for most of the grids in my application to use 
built in search fields rather a separate search form. However, when I 
override the Cell Headers the standard sorting link and icon is 
understandably gone.


Does Tapestry provide any means to include the sorting back into a Cell 
Header override. If not, what am I looking at in terms of replacing it? 
I noticed the sort links point to the .grid.columns:sort/ 
event. Can I possibly create a Link pointing to this event with the 
appropriate columnName and have it working?


Alternately, I'm looking at GridColumns and wonder if it is possible to 
extend that Component. I'm unsure of how I would use it with a grid though.


Worst-case scenario I'm imagining is writing an EventLink per Header and 
writing custom event handlers that manipulate the data set provided via 
Property to the source attribute of the Grid. That seems messy and like 
a lot of work, though. I can't think of how that could be encapsulated 
into a re-usable Component.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: tapestry-upload and zones?

2011-03-11 Thread Rich M
Looking through it seems like some browsers (Firefox 3 at the least) 
have started working file uploads into their APIs so they can be used in 
AJAX, but I don't believe the cross-browser coverage for that is good 
enough yet.


I was reading into the IFrame solution when I happened upon a comment 
from someone saying you can return a 204 No Content HTTP Response to 
prevent a page refresh. Preventing a page refresh would be good enough 
for my page to continue otherwise functioning asynchronously while still 
allowing for file uploads.


I was able to implement this. I took the upload component out of the 
AJAX form and created a separate form for it in the block. This form 
calls an onSuccess method that handles the UploadedFile and then returns 
a NoContentStreamResponse I wrote up:


public class NoContentStreamResponse implements StreamResponse {

@Override
public String getContentType() {
return "text/plain";
}

@Override
public InputStream getStream() throws IOException {
return new ByteArrayInputStream(new byte[]{});
}

@Override
public void prepareResponse(Response resp) {
resp.setStatus(204);
resp.setContentLength(0);
}

}

So while it is not exactly asynchronous, it does prevent page refresh 
(which for me was the main point anyway, avoiding the page render 
life-cycle), avoids using an i-frame and the extra code wiring to make 
that work, and more importantly it works. Thought I'd share it in case 
anyone else comes across a situation similar to mine.


On 03/11/2011 04:08 PM, Rich M wrote:
Oh... I did not realize that. Great reference, I'll see what I can 
figure out, thanks!


On 03/11/2011 03:17 PM, Thiago H. de Paula Figueiredo wrote:
File uploading doesn't work with AJAX without faking it using iframes 
or using Flash. It doesn't matter if you're using Tapestry or not, 
this is a limitation of AJAX itself. See this: 
http://stackoverflow.com/questions/543926/is-it-possible-to-use-ajax-to-do-file-upload.



On Fri, 11 Mar 2011 16:40:43 -0300, Rich M  
wrote:



Hi,

I've been working on Image file upload and display. With the help of 
a previous thread, I was able to get a fully working test component 
that could have a client upload a file from a form, and then have 
the file saved on the server and rendered back to the client in the 
browser.


I've moved on to integration of this concept into my actual 
application. I'm having an issue capturing the UploadedFile in any 
event handlers on a page where the form is within a Zone. The form 
is also within a Block that is delegated in case that factors in at 
all.


When the form is submitted, the UploadedFile object is null, and 
thus I cannot handle the object.


In my test component, the UploadedFile object resolves to a 
reference to the Image file uploaded by the client (had they 
uploaded one and no exception occurred). I did another sanity check 
by integrating the upload component into another form for the same 
Entity in my application that is not within a Zone or Block. The 
UploadedFile object was valid in this page as well after form 
submit, leaving me to think there is something about the Zone or 
Block that is interfering with the results I expected.


This is how I have been using the Upload component

Page:

@Property
private UploadedFile uploadedFile;

public void onSuccess(){
 if(uploadedFile == null){
 log.debug("Image file was not provided");
 }else{
 imageManager.saveImage(uploadedFile);
 }
}

TML:



Also since I'd had a couple threads recently where I had forgot to 
use the t:zone attribute properly, I tried out t:zone on the upload 
component to sanity check that as well, but that did not appear to 
change anything.


Is anyone familiar with what challenge(s) I may be facing here in 
getting the upload to work?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org







-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: tapestry-upload and zones?

2011-03-11 Thread Rich M
Oh... I did not realize that. Great reference, I'll see what I can 
figure out, thanks!


On 03/11/2011 03:17 PM, Thiago H. de Paula Figueiredo wrote:
File uploading doesn't work with AJAX without faking it using iframes 
or using Flash. It doesn't matter if you're using Tapestry or not, 
this is a limitation of AJAX itself. See this: 
http://stackoverflow.com/questions/543926/is-it-possible-to-use-ajax-to-do-file-upload.



On Fri, 11 Mar 2011 16:40:43 -0300, Rich M  wrote:


Hi,

I've been working on Image file upload and display. With the help of 
a previous thread, I was able to get a fully working test component 
that could have a client upload a file from a form, and then have the 
file saved on the server and rendered back to the client in the browser.


I've moved on to integration of this concept into my actual 
application. I'm having an issue capturing the UploadedFile in any 
event handlers on a page where the form is within a Zone. The form is 
also within a Block that is delegated in case that factors in at all.


When the form is submitted, the UploadedFile object is null, and thus 
I cannot handle the object.


In my test component, the UploadedFile object resolves to a reference 
to the Image file uploaded by the client (had they uploaded one and 
no exception occurred). I did another sanity check by integrating the 
upload component into another form for the same Entity in my 
application that is not within a Zone or Block. The UploadedFile 
object was valid in this page as well after form submit, leaving me 
to think there is something about the Zone or Block that is 
interfering with the results I expected.


This is how I have been using the Upload component

Page:

@Property
private UploadedFile uploadedFile;

public void onSuccess(){
 if(uploadedFile == null){
 log.debug("Image file was not provided");
 }else{
 imageManager.saveImage(uploadedFile);
 }
}

TML:



Also since I'd had a couple threads recently where I had forgot to 
use the t:zone attribute properly, I tried out t:zone on the upload 
component to sanity check that as well, but that did not appear to 
change anything.


Is anyone familiar with what challenge(s) I may be facing here in 
getting the upload to work?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org







-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



tapestry-upload and zones?

2011-03-11 Thread Rich M

Hi,

I've been working on Image file upload and display. With the help of a 
previous thread, I was able to get a fully working test component that 
could have a client upload a file from a form, and then have the file 
saved on the server and rendered back to the client in the browser.


I've moved on to integration of this concept into my actual application. 
I'm having an issue capturing the UploadedFile in any event handlers on 
a page where the form is within a Zone. The form is also within a Block 
that is delegated in case that factors in at all.


When the form is submitted, the UploadedFile object is null, and thus I 
cannot handle the object.


In my test component, the UploadedFile object resolves to a reference to 
the Image file uploaded by the client (had they uploaded one and no 
exception occurred). I did another sanity check by integrating the 
upload component into another form for the same Entity in my application 
that is not within a Zone or Block. The UploadedFile object was valid in 
this page as well after form submit, leaving me to think there is 
something about the Zone or Block that is interfering with the results I 
expected.


This is how I have been using the Upload component

Page:

@Property
private UploadedFile uploadedFile;

public void onSuccess(){
if(uploadedFile == null){
log.debug("Image file was not provided");
}else{
imageManager.saveImage(uploadedFile);
}
}

TML:



Also since I'd had a couple threads recently where I had forgot to use 
the t:zone attribute properly, I tried out t:zone on the upload 
component to sanity check that as well, but that did not appear to 
change anything.


Is anyone familiar with what challenge(s) I may be facing here in 
getting the upload to work?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: JasperReports integration

2011-03-11 Thread Rich M
How are you running your webapp. Maven and mvn jetty:run, deployed into 
some servlet, something else? The answer most likely depends on your 
answer here.


If using Maven, you add the jars as a dependency in the pom.xml like:


jasperreports-local
jasperreports-local
3.5.0


Otherwise, look up how to add dependencies to your classpath for your 
servlet container.


On 03/11/2011 05:03 AM, degressor wrote:

Noob question: how can I add the jars to the webapp classpath?

--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/JasperReports-integration-tp3415368p3424778.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Uploading then displaying Images

2011-03-11 Thread Rich M
Thanks everyone for the responses so far, conceptually I think this is 
coming together for me.


So, I'm glad the context path was not a good idea, it felt dirty from 
the beginning. Avoiding that, there are two main options: use the 
database to store/retrieve the images, or use a configured system folder 
from where I can load/save files with Java IO.


Regardless of the option chosen there, the image file will be captured 
as an InputStream and returned as a StreamResponse in some form to a 
page/component.


As far as linking the StreamResponse to an HTML IMG tag, I believe I 
understand the various options presented here.


LLTYK suggests using an EventLink. I was looking through my code and 
found a Captcha implementation I have using a propertyExpression in the 
TML on the src attribute of  to reference a getImageLink function 
that returns ComponentResources.createActionLink("image",null). Then 
there is an onImage() action handler method that returns a 
StreamResponse. I understand this is ActionLink and not EventLink, but I 
think the concept must be nearly identical.


Alternately, Thiago is suggesting that instead of using 
ComponentResources to generate an ActionLink or EventLink, it may be 
easier to create a seperate Page that handles returning just a 
StreamResponse. In that case the EventLink can be replaced with a 
PageLink and using an activation context the ID for the Image can be 
passed to the Page so it can load the Image, build the StreamResponse, 
and return it.


<30 minutes later> Okay, the PageLink works out, great! I can see the 
biggest issue I was having was setting up the src attribute for IMG 
correctly. I was stuck thinking it was either the URL to the context 
path or the StreamResponse itself, rather than a link to an event or 
page that returns the StreamResponse.


Thanks,
Rich


On 03/11/2011 08:08 AM, Thiago H. de Paula Figueiredo wrote:

On Fri, 11 Mar 2011 09:24:35 -0300, LLTYK  wrote:


Nobody's mentioned createEventLink. That's where you get the image url,
create an event link pointing to the event handler that returns the 
stream response.


I haven't mentioned it because my preferred approach is to create a 
page just for returning StreamResponses. It's more reusable, as it can 
be used to serve images for any page, while an event must be only used 
inside a give page.





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Uploading then displaying Images

2011-03-10 Thread Rich M

On 03/10/2011 04:21 PM, Thiago H. de Paula Figueiredo wrote:

On Thu, 10 Mar 2011 17:49:14 -0300, Rich M  wrote:

Okay, that makes sense. Is there a way to use the StreamResponse 
instead of the URL then to display an image in the browser?


Unless you want to generate one of that data URLs 
(http://en.wikipedia.org/wiki/Data_URI_scheme), you'll need to 
generate an URL for it just like it was described in the thread you 
linked. StreamResponses don't have URLs by themselves.


My application will be able to more reliably serve the images via the 
StreamResponse rather than the URL


Why?
Primarily because I can't think of a reasonable way to build a URL to 
the file that could actually be served. I wish I was more knowledgeable 
about servlets and such, but if my application is running from a WAR, 
how would I get any files into that context? In development I use maven 
directory structure and the mvn jetty:run command to execute. From here 
I know I can place files relatively from my context in 
src/main/webapp/ and serve it as an Asset. However, when I 
have to deploy it into production and run it as a WAR in stand-alone 
Jetty, I think this approach is no longer viable.


so I'd like to consider that approach, or at least know if how to do 
it for curiosity sake.


Wise words. :)




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Uploading then displaying Images

2011-03-10 Thread Rich M

On 03/10/2011 03:17 PM, Thiago H. de Paula Figueiredo wrote:

On Thu, 10 Mar 2011 16:37:29 -0300, Rich M  wrote:


Hi,


Hi!

I had read this thread 
http://tapestry.1045711.n5.nabble.com/How-to-display-Blob-byte-array-image-td2436148.html 
along with other information regarding uploading/displaying images. I 
think I'm a bit confused as to what my ImageStreamResponse is or 
should be achieving. I had thought using that I might be able to 
display the image itself in the TML, but it seems I'd need the URL 
instead. If I had the URL in any case then what purpose does the 
ImageStreamResponse serve?


None. When you have the image in some public URL, inside or outside 
your application, you don't need a StreamResponse for it. Just use its 
URL. StreamResponse is used when you have the content generated on the 
fly, available as an InputStream or in memory.


Okay, that makes sense. Is there a way to use the StreamResponse instead 
of the URL then to display an image in the browser? My application will 
be able to more reliably serve the images via the StreamResponse rather 
than the URL so I'd like to consider that approach, or at least know if 
how to do it for curiosity sake.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Uploading then displaying Images

2011-03-10 Thread Rich M

Hi,

I think I've run into a conceptual understanding roadblock in trying to 
setup uploading then displaying of images in my application.


I've got the uploading part working so far, although since my 
application is deployed as a WAR, the files upload to a system folder. 
That works alright, but might be a concern regarding the subsequent 
displaying.


I wrote up a service that can manage these images as Image or File 
object, and I wrote up an ImageStreamResponse class with its inputStream 
coming from the Image's outputStream. The service can generate the 
ImageStreamResponse from a filename, which I store in the database.


I had read this thread 
http://tapestry.1045711.n5.nabble.com/How-to-display-Blob-byte-array-image-td2436148.html 
along with other information regarding uploading/displaying images. I 
think I'm a bit confused as to what my ImageStreamResponse is or should 
be achieving. I had thought using that I might be able to display the 
image itself in the TML, but it seems I'd need the URL instead. If I had 
the URL in any case then what purpose does the ImageStreamResponse serve?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Label not displaying it's body

2011-03-03 Thread Rich M
Are you decorating the label or otherwise making use of it as a 
component, or just using it to display? If you want to give your own 
value for the label text disaply, why not just use an HTML label like 
${myValueHere}.


I'm not sure what is going on with your code example because it has a 
lot of typos, if that was because your email sent in HTML the first 
time, send it in plain text. I'd at least expect the for=userName to be 
for="userName" and t:type="TextField" instead of t:type="TextFieldd" for 
it to be valid XHTML and a valid invisibly instrumented component.


-Rich

On 03/03/2011 02:30 PM, bogdan_cm wrote:

I have this piece of code(only relevant part included):

"t:label for=userName>  LABEL BODY /t:label"

"input type="text" t:id="userName" t:type="TextFieldd" t:value="userName"
t:validate="required"/"


I would expect, when rendered, to have something like this:

LABEL BODY: TEXTFIELD

instead, what I have is:

   User Name TEXTFIELD ->  which is what the label displays if there is no
body

What am i doing wrong here? If I add the body to the app.properties file it
get's picked up and put in properly. Only when I provide the label body in
the .tml it's behaving unexpectedly, and it's the way I would like it to be
as I plan on changing it dynamically like this:
${myValueHere}




Thanks,
Bogdan.


--
View this message in context: 
http://tapestry.1045711.n5.nabble.com/Label-not-displaying-it-s-body-tp3408519p3408519.html
Sent from the Tapestry - User mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Capturing action, event, form requests

2011-03-01 Thread Rich M

On 03/01/2011 11:26 AM, Thiago H. de Paula Figueiredo wrote:

On Tue, 01 Mar 2011 13:03:34 -0300, Rich M  wrote:


Hi,


Hi!

I currently have a Dispatcher implementation to handle page and asset 
requests in order to process authentication and security logic as 
necessary. However, it appears to me that (at least in 5.1) the 
Dispatcher does not intercept any ActionLinks, EventLinks, form 
events, or otherwise related client-side triggers that are not page 
requests.


These scenarios should be handled by implementing one of the Tapestry 
filter pipelines.

Dispatchers are supposed to return content after handling a request.

Oh, I see. Perhaps then it's reasonable to say I was mislead by this 
Tapestry wiki page 
http://wiki.apache.org/tapestry/Tapestry5HowToCreateADispatcher ? This 
is pretty much exactly what I adapted to my application half a year ago, 
'AccessController' name and all.
Is there a service or service interface to implement that would 
provide an opportunity to step in and intercept these requests before 
a page/component catches them?


Implement a ComponentRequestFilter and contribute it to the 
ComponentRequestHandler service.


Thanks, I'll look into that. Going back and looking at that wiki page 
though I realized that it was ordering the AccessController with 
before:PageRender, I switched it to before:RootPath and it seems to now 
capture the events I was talking about and solved a related problem I had.


I am in fact using the Dispatcher to redirect to a login page with an 
expired context, I suppose I'm not entirely clear yet between the Wiki 
and my working implementation why Dispatcher isn't appropriate. Perhaps 
its a case of, 'it will work, but that's not what it was meant for'? Or 
are there some nuances to the ComponentRequestHandler pipeline that make 
it a more robust authentication point?


Thanks,
Rich


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: org.apache.tapestry5.runtime.ComponentEventException

2011-03-01 Thread Rich M
If you want it to return a String, do something like this. Also, 
@SessionState would not be necessary in a class like this. The 
@SessionState in your page class(es) will maintain the object for you.


public class User {
private String user_id;

public User getUser_id() { return user_id; }
public void setUser_id(String user_id){ this.user_id = user_id; }
public void setUser(User user){ this.user_id = user.getUser_id; }

}

If you haven't already done so at login or something along those lines 
before a user gets to the page in question, you'll want to do something 
like the following (maybe in onActivate rather, but I don't know your 
application) otherwise it would make sense that the @SessionState User 
user_id is null.


@SetupRender
void initUser(){
if(user_id == null || user_id.getUser_id() == null){
user_id = new User();
user_id.setUser_id( /* whatever the user_id String would be 
that you need to set */ );

}
}


Yes I have a method like that but it keep's returning null, my user class:

  //These were originally strings but changed in an effort to get
working

@SessionState
private User user_id;

 public User getUser_id() {
return user_id;
}

public void setUser_id(User user_id) {
this.user_id = user_id;
}

then the in my page:

 @SessionState
private User user;

 @Property
private String user_id;

 public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}   

prep.setString(1, user_id);









-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Capturing action, event, form requests

2011-03-01 Thread Rich M

Hi,

I currently have a Dispatcher implementation to handle page and asset 
requests in order to process authentication and security logic as 
necessary. However, it appears to me that (at least in 5.1) the 
Dispatcher does not intercept any ActionLinks, EventLinks, form events, 
or otherwise related client-side triggers that are not page requests.


Is there a service or service interface to implement that would provide 
an opportunity to step in and intercept these requests before a 
page/component catches them?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] recordError for Forms in Blocks

2011-02-28 Thread Rich M

On 02/25/2011 06:17 PM, Josh Canfield wrote:

I grabbed your code and ran it. I'm not 100% sure what's supposed to
happen if you perform an ajax post but don't return anything, but have
errors.
Me neither, I suppose I expected that simply using the recordError would 
have my page functioning the same way the POST would without AJAX, but 
that's a bit naive

I added a handler for failure and returned the same block back
and it seems to do the right thing. Is the form supposed to just send
back the errors if it fails?

 Block onFailure() {
 log.debug("Failed form post");
 return resources.findBlock("triggerPrice");
 }



Yes, the form is supposed to send back just errors if it fails. I think 
using onFailure is my best solution at this point, I didn't realize I 
could catch onFailure and return a Block/Page/etc, I think I had become 
reliant on using onValidate and recordError to do as much for me in the 
rest of the pages I wrote.


I tried the onFailure returning the findBlock("triggerPrice") from 
ComponentResources as well as using blockZone.getBody(). In both of 
those cases, the page re-rendered with the Tapestry red X beside the 
form input field in error, but the Validation Bubbles did not appear.


I've decided to save myself some trouble and use onFailure to return the 
page by String name so the full reload occurs and the Validation Bubbles 
show.


Thanks for the help,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] recordError for Forms in Blocks

2011-02-25 Thread Rich M
Hmm, no luck. I checked the error console and nothing came up. Looked at 
the Request and Response sent in Firebug console, the Response is 200 OK 
and the response body is {}. Threw in a handful of breakpoints in 
Tapestry.js in places that seemed relevant to the Validation Bubbles but 
never saw anything too interesting come up. I'd willingly look deeper, 
but I'm not too sure what I'm looking for at this point.


On 02/25/2011 03:02 PM, Howard Lewis Ship wrote:

User Firefox or Chrome and monitor your JavaScript console; most
likely there's a JavaScript error somewhere on the page that's
preventing normal initialization logic for occurring.

On Fri, Feb 25, 2011 at 11:08 AM, Rich M  wrote:

Does anyone have insight into what I might be missing here? As I mentioned
clicking the form submit will not render the validation bubbles, but if I
click the form submit and then reload the URL in the browser the page
re-renders and the validation bubbles show up.

Does something about the form being part of a zone update versus a page
render change the behavior or lack thereof of validation bubbles?

Thanks,
Rich

On 02/24/2011 05:02 PM, Rich M wrote:

Hi,

I'm having a hard time tracking down my issue at hand here. I have Form
components defined in a set of Block components in a Page class. The entire
set of Blocks is nested within a Zone that allows for navigation between the
Blocks without a page refresh.

Each form has supporting onValidateXXX(Object xxx) methods for most of the
fields. When I submit a given form within one of the related fields in
error, my debugging statements reveal that the expected onValidateXXX(Object
xxx) method(s) are called in the Page class. Likewise, the form fails to
submit when I use the recordError method of the Form components.

However, the Validation Bubbles are failing to display despite being
designated for the related fields. Maybe I'm overlooking something here.

A simplified code example TML and Page class below.

Thanks,
Rich

TML:










${message:discountPercentage-help}

  ${message:discountPercentage-label}













Page Class:

@Inject
private Messages messages;

@InjectComponent
private Form tPriceForm;

@Component(id="discountPercentage")
private TextField discountPercentageField;

@Inject
private Block triggerPrice;

@Persist
private Block selectedBlock;

@InjectComponent
private Zone blockZone;

void onValidateFromDiscountPercentage(Double percent){
if(percent<  0 || percent>  100.0){
debug("Attempted to be created with a discount percentage of: "
+ percent);
tPriceForm.recordError(discountPercentageField,
messages.get("percentage-out-of-bounds"));
return;
}
}



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org








-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] recordError for Forms in Blocks

2011-02-25 Thread Rich M
Does anyone have insight into what I might be missing here? As I 
mentioned clicking the form submit will not render the validation 
bubbles, but if I click the form submit and then reload the URL in the 
browser the page re-renders and the validation bubbles show up.


Does something about the form being part of a zone update versus a page 
render change the behavior or lack thereof of validation bubbles?


Thanks,
Rich

On 02/24/2011 05:02 PM, Rich M wrote:

Hi,

I'm having a hard time tracking down my issue at hand here. I have 
Form components defined in a set of Block components in a Page class. 
The entire set of Blocks is nested within a Zone that allows for 
navigation between the Blocks without a page refresh.


Each form has supporting onValidateXXX(Object xxx) methods for most of 
the fields. When I submit a given form within one of the related 
fields in error, my debugging statements reveal that the expected 
onValidateXXX(Object xxx) method(s) are called in the Page class. 
Likewise, the form fails to submit when I use the recordError method 
of the Form components.


However, the Validation Bubbles are failing to display despite being 
designated for the related fields. Maybe I'm overlooking something here.


A simplified code example TML and Page class below.

Thanks,
Rich

TML:










${message:discountPercentage-help}

 ${message:discountPercentage-label} 
t:validate="required" />













Page Class:

@Inject
private Messages messages;

@InjectComponent
private Form tPriceForm;

@Component(id="discountPercentage")
private TextField discountPercentageField;

@Inject
private Block triggerPrice;

@Persist
private Block selectedBlock;

@InjectComponent
private Zone blockZone;

void onValidateFromDiscountPercentage(Double percent){
if(percent < 0 || percent > 100.0){
debug("Attempted to be created with a discount percentage 
of: " + percent);
tPriceForm.recordError(discountPercentageField, 
messages.get("percentage-out-of-bounds"));

return;
}
}



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Select with zone failing intermittently

2011-02-25 Thread Rich M
I can't say with any certainty this is your problem, but the one time I 
was having issues with an AJAX request being dumped and never showing up 
server side there was a race condition. I had it listening to the click 
event of a submit button, and on slower connections the form submit 
would beat out the AJAX request to the server. In your case I could see 
the Periodic update (assuming its on the same page) creating some sort 
of race condition. Worth considering if so.


Here is the link to the thread on this list so you can compare and see 
if your code is similar: 
http://tapestry.markmail.org/thread/6nlztv5dlv4pix77


Regards,
Rich

On 02/25/2011 10:35 AM, Bryan Lewis wrote:

To follow up...  moving the first select out of the zone didn't help.  I
didn't see how it would, was grasping at straws.

I finally avoided the problem by getting rid of the chained selects.  I went
back to our older component that does the chaining with simple javascript
(stuffing all the possible selection lists into the html which works okay if
they're not huge), so there's no ajax request on the first select.  The
second select does an onchange form submit.  Crude and a bit slower but it
works.

In other words it stumped me.  Maybe some day someone else will see this
posting and have an insight.


On Fri, Feb 25, 2011 at 10:24 AM, Bryan Lewis  wrote:


Nope.  In the failing cases, the ajax request did not arrive at my
AppModule's request filter.  That's why the Select's onValueChanged() isn't
getting called.  I don't think it's a case of Tapestry dropping the request
after it gets it.



On Fri, Feb 25, 2011 at 6:41 AM, Ulrich Stärk  wrote:


Can you see the request hitting the server after the first zone's value is
changed?

Uli

On 24.02.2011 23:43, Bryan Lewis wrote:

I've been trying to figure out a weird bug today, and before I lose the
night over it I thought I'd ask the list.  I'm using the cool new

"chained

select" feature.  One Select has a zone, and triggers an

onValueChanged()

method that affects another Select.  It works fine on my machine and

when

most users try it.  When the first selection changes the server gets the
method call and the zone updates, no problem.

We have a few users in a remote office who access the application

through a

slightly slow connection to a Citrix server.  That is, the browser is
actually running here (in the same network as the app server) and the

user

receives only screen updates.  Occasionally these users will see that

the

chained selects don't work at all.  I've debugged it a little (kinda
difficult since I can't make it happen locally) and the first Select's
method call doesn't happen.  I don't think it's only a case of slowness

-- I

waited about ten seconds.

Does this ring any bells?  I can't see how the Citrix factor or the
connection speed would have any effect.  The app server and browser are

in

the same network.  Other requests are working fine; the app has been

running

almost a year.  I have a periodic-update ajax request that successfully
makes it to the server for the same user.

So maybe I'm using the new feature incorrectly.

.tml:

 
   
   Recipients
   
 
   
 
   
   
   
   
 
   
 


.java:

 private final SelectModel carrierModel = new AbstractSelectModel()
 {
 // Omitting null-returning getOptionGroups() for simplicity

 public List  getOptions()
 {
 List  carriers = getModel().getCarriers();  //

sorted by

name
 List  options =
CollFactory.newList(carriers.size());
 for (Company carrier : carriers) {
 options.add(new
OptionModelImpl(carrier.getCarrierShortName(), carrier));
 }
 return options;
 }
 };
 public SelectModel getCarrierModel()
 {
 return carrierModel;
 }

 public Object onValueChangedFromCarrierSelect(Company carrier)
 {
 debug("-- onValueChangedFromCarrierSelect " +
carrier.getCarrierShortName());
 selectedCarrier = carrier;
 return recipientZone.getBody();
 }


To be clear:  In the real app, the recipientSelect also has a zone

parameter

to update a third list.  I omitted it here because the bug happens

before

that.

The only thing I can see that I'm doing different from the documented
example is, my selects are in the same zone.  I'll try splitting them up

and

using a MultiZoneUpdate or some such.

Thanks for any ideas.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



[5.1] recordError for Forms in Blocks

2011-02-24 Thread Rich M

Hi,

I'm having a hard time tracking down my issue at hand here. I have Form 
components defined in a set of Block components in a Page class. The 
entire set of Blocks is nested within a Zone that allows for navigation 
between the Blocks without a page refresh.


Each form has supporting onValidateXXX(Object xxx) methods for most of 
the fields. When I submit a given form within one of the related fields 
in error, my debugging statements reveal that the expected 
onValidateXXX(Object xxx) method(s) are called in the Page class. 
Likewise, the form fails to submit when I use the recordError method of 
the Form components.


However, the Validation Bubbles are failing to display despite being 
designated for the related fields. Maybe I'm overlooking something here.


A simplified code example TML and Page class below.

Thanks,
Rich

TML:










${message:discountPercentage-help}

 ${message:discountPercentage-label} 
t:validate="required" />













Page Class:

@Inject
private Messages messages;

@InjectComponent
private Form tPriceForm;

@Component(id="discountPercentage")
private TextField discountPercentageField;

@Inject
private Block triggerPrice;

@Persist
private Block selectedBlock;

@InjectComponent
private Zone blockZone;

void onValidateFromDiscountPercentage(Double percent){
if(percent < 0 || percent > 100.0){
debug("Attempted to be created with a discount percentage 
of: " + percent);
tPriceForm.recordError(discountPercentageField, 
messages.get("percentage-out-of-bounds"));

return;
}
}



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] NPE when re-rendering Zone with Blocks containing Forms

2011-02-23 Thread Rich M
Ah, thanks for the example! It was obvious right away what I was doing 
wrong. Turned out to be I simply forgot the t:zone parameter for the 
Form and ActionLink components encapsulated by the Zone, which would 
explain why Tapestry had been complaining when I was doing 
zone.getBody() as returns from the Event methods before.


Thanks,
Rich

On 02/23/2011 02:49 PM, Josh Canfield wrote:

Hi,

I'm getting the following error

I can't reproduce the error. Can you create a cut down version that
causes the problem?

Here is my attempt to recreate.


 @Property
 private String blockId = "one";

 @Component
 private Zone blockZone;

 @Component
 private Form oneForm;

 @Property
 private String oneText;

 @Component
 private Form twoForm;

 @Property
 private String twoText;

 @Inject
 private ComponentResources resources;

 public Block onSuccessFromOneForm() {
 blockId = "two";
 return blockZone.getBody();
 }

 public Block onSuccessFromTwoForm() {
 blockId = "one";
 return blockZone.getBody();
 }

 public Block getTheBlock() {
 return resources.getBlock(blockId);
 }



 
 
 
 One
 
 
 
 
 
 
 Two
 
 
 
 


Josh

On Wed, Feb 23, 2011 at 10:52 AM, Rich M  wrote:

Hi,

I'm getting the following error

Caused by: java.lang.NullPointerException
at
org.apache.tapestry5.corelib.components.Form._$environment_read_renderSupport(Form.java)
at
org.apache.tapestry5.corelib.components.Form.beginRender(Form.java:245)
at org.apache.tapestry5.corelib.components.Form.beginRender(Form.java)

when I re-render the main zone in my page from an ActionLink or FormSuccess
event method.

More about my page:

The page is divided into 8 blocks, and 6 of the blocks encapsulate a form,
as such:







  ...






When first loading the page, it delegates to the first block. You can fill
out the form and then submit the form. Upon submitting the form, it triggers
the onSuccessFromForm method, which updates the Block for the Delegate and
returns the zone component.

At this point, I get the NullPointerError which points directly to the line
in the TML file declaring the  in the Block that should now be
delegated to. I declare the t:id of the form and in the page class each Form
is declared as a private Form with the @Component annotation.

Any help or advice would be appreciated. I have used the
Zone/Block/Event-Method strategy in another Component of mine successfully,
but the Blocks in that Component never contained Form components, which
seems to be the added complication.

Also, I had the Events working when I just returned the page class itself by
String reference, but I'd prefer to update the Zone over reload the Page
each time.

Thanks,
Rich


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



[5.1] NPE when re-rendering Zone with Blocks containing Forms

2011-02-23 Thread Rich M

Hi,

I'm getting the following error

Caused by: java.lang.NullPointerException
at 
org.apache.tapestry5.corelib.components.Form._$environment_read_renderSupport(Form.java)
at 
org.apache.tapestry5.corelib.components.Form.beginRender(Form.java:245)

at org.apache.tapestry5.corelib.components.Form.beginRender(Form.java)

when I re-render the main zone in my page from an ActionLink or 
FormSuccess event method.


More about my page:

The page is divided into 8 blocks, and 6 of the blocks encapsulate a 
form, as such:








 ...






When first loading the page, it delegates to the first block. You can 
fill out the form and then submit the form. Upon submitting the form, it 
triggers the onSuccessFromForm method, which updates the Block for the 
Delegate and returns the zone component.


At this point, I get the NullPointerError which points directly to the 
line in the TML file declaring the  in the Block that should now 
be delegated to. I declare the t:id of the form and in the page class 
each Form is declared as a private Form with the @Component annotation.


Any help or advice would be appreciated. I have used the 
Zone/Block/Event-Method strategy in another Component of mine 
successfully, but the Blocks in that Component never contained Form 
components, which seems to be the added complication.


Also, I had the Events working when I just returned the page class 
itself by String reference, but I'd prefer to update the Zone over 
reload the Page each time.


Thanks,
Rich


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: EventLink URI and loop component

2011-02-18 Thread Rich M

On 02/18/2011 12:59 PM, Thiago H. de Paula Figueiredo wrote:

On Fri, 18 Feb 2011 15:45:54 -0200, Rich M  wrote:

The challenge in your case is I don't believe you can dynamically 
assign a component ID. I double checked myself just now, and t:id 
only took a discrete ID (in 5.1.0.5), and was not happy pulling it 
from a property or other dynamic means.


Static structure is not possible with dynamic component ids. I think 
the issue here is forgetting the event instance and relying only on 
passing information to the event handler method (in this case, using 
the context).


I fully agree, my answer was convoluted in attempts to reference the 
broader scope of challenges faced when dealing with the static structure 
of a component enclosed within a loop. The concept of static structure, 
given a full understanding, makes the proper use of components in a Loop 
clear.


However, I still think for someone coming to Tapestry it is likely to 
think of loops in the Java sense where each iteration is fresh 
(loop-declared objects/variables are unique between iterations, etc). It 
would be worthwhile to clarify the implications of static structure in 
loops where users are most likely to confuse a need for dynamic behavior 
with dynamic structure based on prior experiences with loops. Perhaps I 
haven't found the right documentation page, but I can't readily find 
much explanation of static structure and its implications in the 
Tapestry site documentation on pages where I might expect it.


Regards,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: EventLink URI and loop component

2011-02-18 Thread Rich M

Hi,

I believe this is a common stumbling point with Loops in Tapestry and 
the relation to static structure. Tapestry is able to set distinct 
component IDs in the first case because there is a definition for each 
facetbox component in your TML. However, in the version with the loop, 
there is only one facetbox statically defined in the TML, so it is given 
one component ID by Tapestry (as it seems one is not explicitly being 
provided).


Think about it from the aspect of connecting to the component(s) from 
your Page/Component class. If you used @InjectComponent, what would be 
the difference in referencing your facetbox(es) between using the loop 
and not?


In many cases, people want distinct attributes for a given component 
defined within a Loop. There is a recent thread ( 
http://markmail.org/message/uwcpkn5s6k2azrpw ) in the list about making 
the Zone ID attribute distinct between the actual instances of a 
component declared within a Loop. I've also seen similar solutions in 
the list for Client ID and so on.


The challenge in your case is I don't believe you can dynamically assign 
a component ID. I double checked myself just now, and t:id only took a 
discrete ID (in 5.1.0.5), and was not happy pulling it from a property 
or other dynamic means. Therefore, the solutions for Zone ID and Client 
ID being dynamically assigned from a getXXX() property method does not 
seem viable to port over to Component ID.


This leads to Thiago's example of using the EventLink's context 
parameter. I believe in order to make use of the context parameter here, 
the concept of the FacetBox will need to change from being the Box of a 
unique Facet to being a Box that will handle any Facet that is passed in 
to its context. As a result, instead of the method your EventLink 
triggers implicitly understanding the Facet it should work with, it will 
need to explicitly load the Facet from the information in the context 
parameter.


*Aside: I referenced the FAQ page, as well as the Component Reference 
pages for Loop and AjaxFormLoop on the Tapestry site, but couldn't find 
any direct mentions of enabling controlled, dynamic attributes for a 
looped component. It seems this question gets asked enough in one form 
or another in this list to warrant some attention on one or all of those 
pages. Specifically in regards to the best practices for giving dynamic 
values to some attributes, clarifying that the component ID/component 
itself is going to be static, and detailing the implications of static 
structure and Loops.


Regards,
Rich

On 02/18/2011 11:26 AM, Erik Fäßler wrote:

 Hey there,

It seems I have a problem with tapestry's internal component IDs when 
using a loop.


I have component called facetbox. As I have several facets, I need 
several FacetBoxes:









In each facetbox there exists at least one EventLink component which 
triggers an event in the corresponding facetbox. So far so good, 
everything works.


But know I'd like to make things more generic. I would like to be able 
to change my facets easily e.g. by defining a list containing all 
currently available facets. I use a loop component to create just the 
facets available:








I did not change anything else. Now, my EventLink components inside of 
the facets won't work correctly anymore.

The EventLinks created in the _first_ example looked like this:

/hits.tabs.facetbox:termselect/
/hits.tabs.facetbox_0:termselect/
/hits.tabs.facetbox_1:termselect/
...

In the _second_ example, the links look like this:

/hits.tabs.facetbox:termselect/
/hits.tabs.facetbox:termselect/
/hits.tabs.facetbox:termselect/
...

You will notice that the internal ID identifying the component is 
gone. As a consequence, the event "termselect" is always triggered in 
the first facetbox instead of the one defining the EventLink.


I hope I made my problem clear. I just missed something I guess and 
would be glad if you could help me out. Thanks a lot for any help!


Best regards,

Erik

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Regarding overlay image in tapestry

2011-02-09 Thread Rich M

Hi,

still trying to clarify in my head what you are trying to do, but almost 
all of that functionality would still be HTML using CSS.


I'm guessing you are laying a link element over the image element you 
have (or making the img the CSS background-image of a link element). The 
only difference with plain old HTML and Tapestry then would be to 
consider using a pagelink component to build a link to your next 
Tapestry page.


Alternately, if you are going to be making a whole lot of these 
playbutton image links, you can make your own component that does all 
the above on its own, and then just include that component as an element 
in your TML file for the page.


-Rich

On 02/09/2011 05:13 PM, sarov saravanan wrote:

Hi,
   I am just trying to display a playbutton image over a list of main 
images, That is you see list of images on a page and each will have a 
playbutton image over it which on clicking leads to another page.

Is there anyway I can do this in tapestry as we do like in html using css.

Any help or suggestion is appreciated! 


Thanks!

with regards,
Saravanan.N





No need to miss a message. Get email on-the-go
with Yahoo! Mail for Mobile. Get started.
http://mobile.yahoo.com/mail



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Simple radiogroup question

2011-02-09 Thread Rich M
Here is some code I recently used with a RadioGroup and two buttons. 
Mine is tailored to decide whether a user wants to be contacted by Phone 
or E-Mail, but I'm sure you can adapt. The key for me was using an Enum 
as the value on the RadioGroup and as the value of each Radio.


ContactBy.java:

public enum ContactBy { EMAIL, PHONE }


Page.java:

@Component(id="contactPhone")
private Radio contactPhoneField;

@Component(id="contactEmail")
private Radio contactEmailField;

@Component(id="contactBy")
private RadioGroup contactByField;
@Property @Persist
private ContactBy contactBy;

public ContactBy getContactByPhone(){
return ContactBy.PHONE;
}

public ContactBy getContactByEmail(){
return contactBy.EMAIL;
}

   @SetupRender
void setupRender(){
contactBy = ContactBy.EMAIL;
}

private void onValidateFromContactBy(String sel){
if(ContactBy.PHONE.toString().equals(sel)){
phoneRequired = true;
emailRequired = false;
}else{
emailRequired = true;
phoneRequired = false;
}
}


Page.tml:


${message:contact-by-email-label}t:type="Radio" t:id="contactEmail" value="contactByEmail" 
onclick="setEmail()" />
${message:contact-by-phone-label}t:type="Radio" t:id="contactPhone" value="contactByPhone" 
onclick="setPhone()" />



Hope that helps,
Rich

On 02/09/2011 12:26 PM, hese wrote:




thanks.  but, i saw this example and it doesn't talk about how to check a
particular button in the group.




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] Confusing ZoneUpdater behavior

2011-01-27 Thread Rich M

On 01/26/2011 07:32 PM, Josh Canfield wrote:

On my local machine, it runs as expected. I take in parameters from a TML
declaration of the mixin on a Submit button. I have it bind via Prototype to
the mouseup event to fire a method that returns via AJAX back to the Page
class.

I just re-read your original post. Are you canceling the form submit
when you handle the mouseup?
Ah, no, that seems like the exceedingly logical thing to do though. I 
had basically set it so the mixin would set the Page variable, so 
although the form always submitted, it had a line of logic to read the 
page variable and know when to stop itself and return out before 
processing DB entities and such.



I inserted some simple JS after the ZoneManager call that wastes half a
second of time. That seemed to be ample time to allow the ZoneManager update
to trigger the event before the form submission. Do you think 500 ms is
excessive waiting time here?

I'm not sure how you're code works, but instead I'd fix the issue by
preventing the form from being submitted when you capture the mouseup,
and then do the re-post the form in Javascript when you know it's what
needs to get done. Putting in pauses is the kind of workaround that's
likely to bite you later when the timing changes again.

I seem to recall something like this coming up on the list before,
there might be existing code for an ajax enabled confirmation dialog.
A quick google didn't find it, but you might have more luck if you're
more persistent.

Josh


Gotcha. I do like the sound of that solution better, albeit it is more 
complicated (in terms of what I know how to do and don't know how to 
do). I'm a bit lost as to what I'd need to do to make this happen. I 
suppose it won't require a ZoneManager update for one thing, since this 
solution avoids interacting back with the server. Is there a way to hook 
up the mixin to the Submit so that it can return false for the onsubmit 
event of the Submit element? That seems like probably the most 
straightforward solution I can think of to stop the form, unless there's 
a Tapestry way of canceling the event that calls back to the Page class 
onPrepare/onSuccess methods.


I found this thread ( 
http://tapestry.1045711.n5.nabble.com/quot-Confirm-quot-mixin-won-t-cancel-when-in-zone-td2436465.html 
) which seems similar, but wasn't quite able to parse out the necessary 
javascript concepts I'd need to get what I'm looking for. Furthermore, 
that code is for an EventLink, I've got a Submit element, and that 
thread seemed to make reference to a distinct differentiation between 
the two scenarios. Also looks like I was asking about this months ago 
heh ( 
http://tapestry.markmail.org/search/?q=cancel%20form%20submission#query:cancel%20form%20submission%20order%3Adate-backward+page:2+mid:wi2l27jeaezsaoo3+state:results 
) but I guess I never really figured out the problem at hand back then.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] Confusing ZoneUpdater behavior

2011-01-26 Thread Rich M
Oh wow, I never thought of that.. so it was racing between triggering 
the zone event and the form submission then I'm guessing? I tried moving 
a single breakpoint to the ZoneManager call and then resuming the JS 
again. That wasn't working in Firebug, the only way was if I stepped 
past the ZoneManager call before resuming. That was enough for me to 
believe it was some timing problem.


I inserted some simple JS after the ZoneManager call that wastes half a 
second of time. That seemed to be ample time to allow the ZoneManager 
update to trigger the event before the form submission. Do you think 500 
ms is excessive waiting time here?


Thanks for pointing that out, Josh, would have never occurred to me!

thanks,
Rich

On 01/25/2011 09:27 PM, Josh Canfield wrote:

Sounds like it could be a timing issue. Have you tried putting debug
statements around the in code instead of stepping through with the
debugger?

Sometimes slowly stepping through code gives things a chance to
complete that wouldn't otherwise, possibly it runs fast enough on your
local machine that you don't notice the problem?

Josh

On Tue, Jan 25, 2011 at 11:13 AM, Rich M  wrote:

Hi,

I wrote up a mixin that does delete confirmation. I'd put it through testing
a while back and everything seemed fine. Recently it has turned up that it's
functioning very strangely.

On my local machine, it runs as expected. I take in parameters from a TML
declaration of the mixin on a Submit button. I have it bind via Prototype to
the mouseup event to fire a method that returns via AJAX back to the Page
class. An event handler in the Page class reads the parameter from the
Request and determines whether or not the user decided to Delete or not.
This value is persisted, and in the event handler method for the form
itself, it will bypass deletion based on this boolean.

Clicking cancel cancels out of the deletion. Clicking okay continues through
with the deletion.

Now its different a production server, which is no different that local
other than that it is deployed as a WAR rather than using mvn jetty:run.

Here if you just navigate to the page, the event handler in the Page class
for the AJAX/ZoneUpdater is never called unless you use Firebug and walk
through the Javascript method that feeds the update request. In every single
case using Firebug to walk through, the event handler in the Page class DOES
get called. Note that it always pops up a Javascript confirm box, but only
hooks up through the ZoneUpdater event handler if I walk through in Firebug.

I'm pretty baffled as to why walking through in Firebug gets the call to
work, but standard browser operation doesn't.

For clarification, the life-cycle of the persisted Boolean in the Page class
that the form uses is as follows:

@Persist private Boolean delete_confirm;

onPrepare() ->  if delete_confirm == null then delete_confirm = false; // to
prevent accidental deletes

onDeleteConfirm() ->  ZoneUpdater event handler, delete_confirm =
Boolean.parseBoolean(request_parameter);

onSuccessFromForm() ->  if(!delete_confirm) return; //exit out of form if we
arent confirming the deletion

Any insight?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: [5.1] Confusing ZoneManager behavior

2011-01-25 Thread Rich M

Hi,

got my terms mixed up. ZoneUpdater is a popular mixin that I've used as 
a model for some of mine. ZoneManager is what I'm actually using here, 
specifically zoneManager.updateFromURL(updatedUrl);


Sorry for the confusion.

-Rich

On 01/25/2011 02:13 PM, Rich M wrote:

Hi,

I wrote up a mixin that does delete confirmation. I'd put it through 
testing a while back and everything seemed fine. Recently it has 
turned up that it's functioning very strangely.


On my local machine, it runs as expected. I take in parameters from a 
TML declaration of the mixin on a Submit button. I have it bind via 
Prototype to the mouseup event to fire a method that returns via AJAX 
back to the Page class. An event handler in the Page class reads the 
parameter from the Request and determines whether or not the user 
decided to Delete or not. This value is persisted, and in the event 
handler method for the form itself, it will bypass deletion based on 
this boolean.


Clicking cancel cancels out of the deletion. Clicking okay continues 
through with the deletion.


Now its different a production server, which is no different that 
local other than that it is deployed as a WAR rather than using mvn 
jetty:run.


Here if you just navigate to the page, the event handler in the Page 
class for the AJAX/ZoneUpdater is never called unless you use 
Firebug and walk through the Javascript method that feeds the update 
request. In every single case using Firebug to walk through, the event 
handler in the Page class DOES get called. Note that it always pops up 
a Javascript confirm box, but only hooks up through the ZoneUpdater 
event handler if I walk through in Firebug.


I'm pretty baffled as to why walking through in Firebug gets the call 
to work, but standard browser operation doesn't.


For clarification, the life-cycle of the persisted Boolean in the Page 
class that the form uses is as follows:


@Persist private Boolean delete_confirm;

onPrepare() -> if delete_confirm == null then delete_confirm = false; 
// to prevent accidental deletes


onDeleteConfirm() -> ZoneUpdater event handler, delete_confirm = 
Boolean.parseBoolean(request_parameter);


onSuccessFromForm() -> if(!delete_confirm) return; //exit out of form 
if we arent confirming the deletion


Any insight?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



[5.1] Confusing ZoneUpdater behavior

2011-01-25 Thread Rich M

Hi,

I wrote up a mixin that does delete confirmation. I'd put it through 
testing a while back and everything seemed fine. Recently it has turned 
up that it's functioning very strangely.


On my local machine, it runs as expected. I take in parameters from a 
TML declaration of the mixin on a Submit button. I have it bind via 
Prototype to the mouseup event to fire a method that returns via AJAX 
back to the Page class. An event handler in the Page class reads the 
parameter from the Request and determines whether or not the user 
decided to Delete or not. This value is persisted, and in the event 
handler method for the form itself, it will bypass deletion based on 
this boolean.


Clicking cancel cancels out of the deletion. Clicking okay continues 
through with the deletion.


Now its different a production server, which is no different that local 
other than that it is deployed as a WAR rather than using mvn jetty:run.


Here if you just navigate to the page, the event handler in the Page 
class for the AJAX/ZoneUpdater is never called unless you use 
Firebug and walk through the Javascript method that feeds the update 
request. In every single case using Firebug to walk through, the event 
handler in the Page class DOES get called. Note that it always pops up a 
Javascript confirm box, but only hooks up through the ZoneUpdater event 
handler if I walk through in Firebug.


I'm pretty baffled as to why walking through in Firebug gets the call to 
work, but standard browser operation doesn't.


For clarification, the life-cycle of the persisted Boolean in the Page 
class that the form uses is as follows:


@Persist private Boolean delete_confirm;

onPrepare() -> if delete_confirm == null then delete_confirm = false; // 
to prevent accidental deletes


onDeleteConfirm() -> ZoneUpdater event handler, delete_confirm = 
Boolean.parseBoolean(request_parameter);


onSuccessFromForm() -> if(!delete_confirm) return; //exit out of form if 
we arent confirming the deletion


Any insight?

Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter element and IE8

2011-01-05 Thread Rich M

On 01/04/2011 05:14 PM, Thiago H. de Paula Figueiredo wrote:

On Tue, 04 Jan 2011 19:44:34 -0200, Rich M  wrote:


Hi,


Hi!

The issue here being that in IE8 the ' characters got written out as 
&'


This isn't a problem with Tapestry. IE doesn't handle HTML entities as 
it should. In addition, use JavaScript event observers instead of 
adding them as onXXX attributes. That's the recommended (and less 
error-prone) way.


Using a Mixin with @MixinAfter to initialize an Event.observe in 
Javascript worked to replace the previous error-prone method I 
mentioned. As always, Thiago, you have a great way of concisely knocking 
some sense into my code/mindset.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: Tapestry 5 and W3C HTML Validation

2011-01-04 Thread Rich M
I see some of your points. The W3C one is supposed to be an XHTML 
validator.. I've run both XHTML 1.0 Strict and XHTML 1.0 Transitional, 
but I think you're right in saying it doesn't pick up the Tapestry XML 
namespace.


I am, however, validating the final HTML output. I point the url to the 
page and it loads the page and runs on the generated HTML. The nesting 
of the  tags still seems a valid point, unless I'm still missing 
something here or writing the tags wrong.


If you are interested in seeing what I'm talking about, here is a link 
to the validation I see:

http://validator.w3.org/check?uri=https%3A%2F%2Fwww.moremagicpoints.com%2Fmloyalty%2Findex&charset=%28detect+automatically%29&doctype=Inline&ss=1&outline=1&group=0&user-agent=W3C_Validator%2F1.1

-Rich

On 01/04/2011 12:51 PM, Thiago H. de Paula Figueiredo wrote:

On Tue, 04 Jan 2011 15:14:00 -0200, Rich M  wrote:


Hi,


Hi!

I searched through the mailing list and the last thread on this topic 
seems to date back to 2006. First, I'd like to know what the expected 
doctype is, is it XHTML 1.0 Transitional, XHTML 1.0 Strict, or 
something else?


Tapestry doesn't make any assuptions on the doctype. Tapestry can 
output HTML (default) or XML syntax documents.


Also, the best reference I've seen for using Layout components to 
structure a site is along the lines of having a Layout.tml start with a
http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";> 
tag, then all Templates using it also starting with t:type="Layout" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";>. HTML 
Validation complains about nested  tags.


Tapestry templates are XML files and most HTML validation tools don't 
understand XML namespaces. Have you tried to find and use XHTML 
validators?


So I guess I'm partly wondering if W3C HTML Validation is achievable, 
or if I need to learn to distinguish the exceptions from my own issues?


You seem to be validating the templates themselves instead of the 
generated HTML.


I've got some CSS and HTML bugs I need to work through and the Web 
Design people helping me are throwing a fuss about the HTML and so on.





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



MarkupWriter element and IE8

2011-01-04 Thread Rich M

Hi,

I noticed strange behavior with Internet Explorer 8 and some 
MarkupWriter output into HTML using the element method.



I have the following in my page class:

writer.element("a","href",formEvent,"id","submitPrefs","onclick",


"javascript:setupSubmit(this,'"+(overrideParentPage==null?"":overrideParentPage)+"');");


in FireFox this renders as (when overrideParentPage = OverviewTab):

Save Preferences



This was what I expected.

However, in IE 8 it renders as this:

http://localhost/mloyalty/cai/index/catchoose:savepreferences";>Save Preferences

The issue here being that in IE8 the ' characters got written out as 
&'


The setupSubmit script is vital to functionality, anyone have any 
insight into this issue?


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Tapestry 5 and W3C HTML Validation

2011-01-04 Thread Rich M

Hi,

I searched through the mailing list and the last thread on this topic 
seems to date back to 2006. First, I'd like to know what the expected 
doctype is, is it XHTML 1.0 Transitional, XHTML 1.0 Strict, or something 
else?


Also, the best reference I've seen for using Layout components to 
structure a site is along the lines of having a Layout.tml start with a
http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";> 
tag, then all Templates using it also starting with t:type="Layout" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";>. HTML 
Validation complains about nested  tags.


Complaints for invalid attributes (like the ones for tapestry 
components, ie beaneditform -> include, add, reorder, etc.) I'm assuming 
should be ignored as they are vital to the framework.


So I guess I'm partly wondering if W3C HTML Validation is achievable, or 
if I need to learn to distinguish the exceptions from my own issues? 
I've got some CSS and HTML bugs I need to work through and the Web 
Design people helping me are throwing a fuss about the HTML and so on.


Thanks,
Rich

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-22 Thread Rich M
Oh, okay, that works great. Guess I got my mindset too narrow to see 
that, thanks.


One more thing, the FormEventLink that is generated doesn't always play 
nice.


Two scenarios (the Component with the FormEventLink will be called 
EventComponent):


1.  A Page class contains reference to the EventComponent in the TML. 
The EventLink generated in the HTML builds a proper URI for this page 
class and everything works.


2. A main Page class delegates a section of its TML to another Page 
class, which is dynamic. This delegated Page class contains reference to 
the EventComponent in the TML. The EventLink generated in the HTML 
builds an incorrect URI for this page class. It builds one referencing 
the Main Page, while the EventComponent is only known to and a part of 
the Delegate Page.


To solve #2 temporarily, I was able to re-write the URI from the 
generated EventLink to reference the correct component. First I got it 
working using new LinkImpl, but since that is an internal class, I opted 
for a Javascript rewrite instead. I couldn't find any other way of 
regenerating the link though... Not sure if there is one?


Thanks,
Rich

On 12/22/2010 02:42 PM, Thiago H. de Paula Figueiredo wrote:

On Wed, 22 Dec 2010 17:05:22 -0200, Rich M  wrote:

I suppose this is where I am confused. I currently use JavaScript to 
write the query parameter into the activation context of the EventLink.


What I'm suggesting you is to *not* use the context as the way of 
passing information to your event handler method. You'd use a query 
parameter added through JavaScript instead. Example: your generated 
link is /page.event. When the field value is changed, you change the 
URL to /page.event?value=.


My logic was that the EventLink triggers the Event Handler method, 
while the form submission puts the hidden input into the Request 
parameters.


This isn't needed nor guaranteed to work in order.




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-22 Thread Rich M

On 12/22/2010 01:44 PM, Thiago H. de Paula Figueiredo wrote:

On Wed, 22 Dec 2010 16:05:15 -0200, Rich M  wrote:

Hmm, I'd tried that several ways, every time the ParameterNames() 
list was empty and I couldn't fetch the parameter I was looking for. 
I tried peeking the Request parameters in the Event method as well as 
@SetupRender.


Are you sure you added the query parameters to the URL generated by 
ComponentResources.create*EventLink() using JavaScript? Or at least 
you added this values as hidden fields?


I suppose this is where I am confused. I currently use JavaScript to 
write the query parameter into the activation context of the EventLink. 
This is what is very messy as described before. The query parameter is 
pulled from the hidden input field in the enclosing form. The javascript 
method setupSubmit takes care of converting the value of the hidden 
input field into the activation context of the URL for the EventLink. 
The one with the "productsList" id will have the query parameter in its 
value attribute.
There was an additional complication with submitting the HTML form 
and the EventLink at the same time.


Why would you do both at the same time?

My logic was that the EventLink triggers the Event Handler method, while 
the form submission puts the hidden input into the Request parameters.


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-22 Thread Rich M
Hmm, I'd tried that several ways, every time the ParameterNames() list 
was empty and I couldn't fetch the parameter I was looking for. I tried 
peeking the Request parameters in the Event method as well as @SetupRender.


There was an additional complication with submitting the HTML form and 
the EventLink at the same time. I had thought wrapping the HTML form 
submit inside the EventLink might work, but this submits the event twice 
it seems.


Here's some code relating to the form and EventLink that might 
illuminate things:


w.element("form", "id", "prefForm", "method", "post");

w.element("center");




w.element("input", "type", "hidden", "id", "productsList", "value", 
""); //This is the field to pass to Event Handler

w.end();




Link formEvent = cr.createFormEventLink("SavePreferences", new 
Object[]{});


w.element("a","href",formEvent,"id","submitPrefs","onclick","javascript:setupSubmit(this);");

w.element("input", "type", "submit", "value", 
ms.get("save-rewards-preferences"));
w.end(); //submit

w.end(); //formEventLink




w.end(); //center

w.end(); //form


On 12/22/2010 12:55 PM, Thiago H. de Paula Figueiredo wrote:

On Wed, 22 Dec 2010 15:42:21 -0200, Rich M  wrote:

I don't have the option of using 5.2 at this point, so that seems to 
leave out @RequestParameter and @ActivationRequestParameter. What 
might my other options be for passing back the value attribute from 
an HTML tag to the Component Event method?


Just @Inject Request and use it's getParameter() method. The above 
annotations are just shortcuts for this.





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-22 Thread Rich M
Whoops, spoke to soon on that Element / Persist strategy. Didn't stop to 
think that the Element object was completely class side and only would 
be as up-to-date as it was at declaration. Any changes in the DOM by 
Javascript don't translate so that doesn't quite work. Wanted to make 
sure no one ended up trying the same and failing.


I don't have the option of using 5.2 at this point, so that seems to 
leave out @RequestParameter and @ActivationRequestParameter. What might 
my other options be for passing back the value attribute from an HTML 
tag to the Component Event method?


I've tried using Javascript to manipulate the EventLink's context, but 
this is really messy. My input value is a comma-separated list and the 
context complains on nearly any special character I'd like to separate 
the values with. I ended up getting working functionality by replacing 
spaces with 'BlAnK' and separating the list with 'SePaRaToR' instead of 
','. These two strings look so weird as to avoid any chance someone 
might actually match them. Feels like a terrible hack to me though, but 
deadlines are deadlines and it works.


Is there anything more elegant that this? I'd surely want to refactor 
this code ASAP after my deadline. Would an upgrade to 5.2 and using 
@RequestParameter be the best refactor I could do, or is there another 
solution, possibly 5.1 compatible?


Thanks,
Rich

On 12/22/2010 11:07 AM, Thiago H. de Paula Figueiredo wrote:

On Wed, 22 Dec 2010 13:57:38 -0200, Rich M  wrote:


Thanks for the clarifications, Thiago. Helpful as always.


You're welcome!

At first I didn't see a nice way of actually feeding the values from 
the HTML form back into the event method for the EventLink though. 
creatEventLink seems to assume I know my context from the Component 
class, but the context is only ever known to an HTML element after 
some Javascript has its way. But then I realized I can save the form 
input Element I made during rendering with the MarkupWriter (last 
concept you mentioned) with Persist. Then in the event method read 
the value attribute back.


Another option is to add request parameters instead of using the 
activation context, something that was made even easier with the new 
@RequestParameter and @ActivationRequestParameter annotations in 
Tapestry 5.2.





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-22 Thread Rich M

Thanks for the clarifications, Thiago. Helpful as always.

I didn't realize that event methods automatically bubbled up if void, 
false, or null were returned from a child component. As far as I can 
tell, this means I wouldn't need to use triggerEvent. I wrote an  
with the href loading the URL from ComponentResources.createEventLink().


At first I didn't see a nice way of actually feeding the values from the 
HTML form back into the event method for the EventLink though. 
creatEventLink seems to assume I know my context from the Component 
class, but the context is only ever known to an HTML element after some 
Javascript has its way. But then I realized I can save the form input 
Element I made during rendering with the MarkupWriter (last concept you 
mentioned) with Persist. Then in the event method read the value 
attribute back.


Another corner turned, Tapestry keeps getting better.

Thanks again,
Rich

On 12/21/2010 07:26 PM, Thiago H. de Paula Figueiredo wrote:

On Tue, 21 Dec 2010 21:36:54 -0200, Rich M  wrote:

writing it as a Component works. Not sure what the problem with the 
Page class was.


Most probably your div was generated before the HTML tag. Your 
scenario really needed to be implemented as a component.


Seem to have hit an additional complication. Since this component is 
generating everything with the MarkupWriter, I'm struggling to 
understand how I can feed values back to the Component into an Event 
method. Mailing list searches and documentation searching haven't 
turned up anything too promosing for me yet.


See method triggerEvent(String eventType, Object[] contextValues, 
ComponentEventCallback callback) in ComponentResources (inherited from 
ComponentResourcesCommon. Searching the mailing lists and JumpStart 
will probably give you some hints.


I haven't seen a way to write a Tapestry component like Form with the 
MarkupWriter, so I don't think I can use a Tapestry Form.


There's no way of doing it. You need to declare components (at least 
their t:id) in a template.



I'm not clear on how a plain HTML form can trigger a Component method,


Just use an URL created from ComponentResources.createEventLink() as 
the action.



is there a Tapestry Javascript method to leverage this?


No need of JavaScript for that (but you can use it if you want)

Alternately, is there a way to feed MarkupWriter content into a TML 
template, as in to write out HTML elements inside a  element?


MarkupWriter.element() inside a component render event method. You can 
also change what was already written manipulating the Element 
instances got from MarkupWriter.





-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-21 Thread Rich M

To follow up,

writing it as a Component works. Not sure what the problem with the Page 
class was.


Seem to have hit an additional complication. Since this component is 
generating everything with the MarkupWriter, I'm struggling to 
understand how I can feed values back to the Component into an Event 
method. Mailing list searches and documentation searching haven't turned 
up anything too promosing for me yet.


I haven't seen a way to write a Tapestry component like Form with the 
MarkupWriter, so I don't think I can use a Tapestry Form. I'm not clear 
on how a plain HTML form can trigger a Component method, is there a 
Tapestry Javascript method to leverage this? Alternately, is there a way 
to feed MarkupWriter content into a TML template, as in to write out 
HTML elements inside a  element?


Thanks,
Rich

On 12/21/2010 05:08 PM, Rich M wrote:
A quick check, yes the @BeforeRenderTemplate method does get called. A 
log message displays, but the html elements don't render anywhere 
according to inspecting of the page source.


I have not tried in a component yet for this. I am in the process. I 
actually think a component will be a better idea anyway, because I 
will need to re-use a chunk of the logic for this page and it is 
pretty intense both on the rendering and javascript sides.


Essentially the component in this case needs to update some DB 
entities, and then the page needs to handle redirection/additional 
logic based on the results of the component form.


If I use " @OnEvent(value = EventConstants.SUCCESS)  " in the page 
class, will I be able to capture the firing of a form in the component 
class? If so that would allow me to trigger logic in the page class, 
and then to access information from the component (private fields with 
getter methods) I could use @InjectComponent to have a reference to 
the component in the Page class?


Let me know if my assumptions there are in line with the truth.

Thanks,
Rich

On 12/21/2010 04:56 PM, Josh Canfield wrote:

Does your event handler get called? Have you tried the same thing in a
page and a component?

On Tue, Dec 21, 2010 at 7:59 AM, Rich M  wrote:

No luck, same result. No  or  elements in the
generated HTML.

On 12/20/2010 06:23 PM, Thiago H. de Paula Figueiredo wrote:
On Mon, 20 Dec 2010 20:48:39 -0200, Rich M  
wrote:


So that seems to narrow it down to some issue in my approach then, 
as I
am not able to see anything written from my MarkupWriter in the 
@BeginRender

phase.

Try @BeforeRenderTemplate



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-21 Thread Rich M
A quick check, yes the @BeforeRenderTemplate method does get called. A 
log message displays, but the html elements don't render anywhere 
according to inspecting of the page source.


I have not tried in a component yet for this. I am in the process. I 
actually think a component will be a better idea anyway, because I will 
need to re-use a chunk of the logic for this page and it is pretty 
intense both on the rendering and javascript sides.


Essentially the component in this case needs to update some DB entities, 
and then the page needs to handle redirection/additional logic based on 
the results of the component form.


If I use " @OnEvent(value = EventConstants.SUCCESS)  " in the page 
class, will I be able to capture the firing of a form in the component 
class? If so that would allow me to trigger logic in the page class, and 
then to access information from the component (private fields with 
getter methods) I could use @InjectComponent to have a reference to the 
component in the Page class?


Let me know if my assumptions there are in line with the truth.

Thanks,
Rich

On 12/21/2010 04:56 PM, Josh Canfield wrote:

Does your event handler get called? Have you tried the same thing in a
page and a component?

On Tue, Dec 21, 2010 at 7:59 AM, Rich M  wrote:
   

No luck, same result. No  or  elements in the
generated HTML.

On 12/20/2010 06:23 PM, Thiago H. de Paula Figueiredo wrote:
 

On Mon, 20 Dec 2010 20:48:39 -0200, Rich M  wrote:

   

So that seems to narrow it down to some issue in my approach then, as I
am not able to see anything written from my MarkupWriter in the @BeginRender
phase.
 

Try @BeforeRenderTemplate

   


-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org


 

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

   



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: MarkupWriter and TML together?

2010-12-21 Thread Rich M
No luck, same result. No  or  elements in the 
generated HTML.


On 12/20/2010 06:23 PM, Thiago H. de Paula Figueiredo wrote:

On Mon, 20 Dec 2010 20:48:39 -0200, Rich M  wrote:

So that seems to narrow it down to some issue in my approach then, as 
I am not able to see anything written from my MarkupWriter in the 
@BeginRender phase.


Try @BeforeRenderTemplate




-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



  1   2   >