cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Wells" <>
Subject Re: [ANN] MaCaTa - An introduction by example to 3 frameworks
Date Thu, 06 Apr 2006 23:02:15 GMT
Hi Michael,

Thanks very much for the feedback.  You're right, I've been rather busy with
this.  It's not perfect but I thought good enough to release for a first
cut.  I'm not sure how much more I can do with it though as in a few weeks
I'm taking a few months off and travelling around Europe, with the aim of
searching for some work later.

I really like your solution, sometimes we get caught up believing that one
way is the best and just go with it.   You've thought a bit about the
problem and solved it in a sensible way.  Now that you've shown this way it
looks like an obvious way to do this.  I guess the thing I like about
squeezers is that they are a touch simpler to use...once you've got it all
setup; you don't have to worry about indexes (not a big problem at all).
Unless security is a concern.  So I think in a lot of cases what you have
outlined is the better solution (off the top of my head).  Perhaps it would
dwell nicely within a Cayenne and Tapestry wiki?



On 07/04/06, Gentry, Michael (Contractor) <>
> I like the CrudEngine.  :-)
> I don't have time to fully explore it right now, but it looks like there
> is some really nice tutorial/reference information there.  You've been
> busy!
> I noticed you put in a note about DataSqueezers not being secure, too.
> That's a big issue for me.  I've adopted the technique now of encoding
> in my DirectLink the index of the data object in my internal List.  For
> example:
> * Tapestry enhancements:
> public abstract List getQueues();
> public abstract void setQueues(List queues);
> public abstract int getQueueIndex();
> public abstract void setQueueIndex(int index);
> * Save query results:
> ...
> List queues = dataContext.performQuery(...);
> setQueues(queues); // save queues off in page/session space
> ...
> * HTML Template:
> <span jwcid="@For" source="ognl:queues" index="ognl:queueIndex" ...>
> ...
> <a href="#" jwcid="@DirectLink" listener="listener:showQueue"
> parameters="ognl:queueIndex">
> * Handle selection of queue (click on DirectLink):
> public void showQueue(int index)
> {
> getQueues().get(index);
> ...
> }
> So, if my performQuery() returns 20 rows I save those objects off in the
> page session space.  The DirectLink will encode 0-19 as the queueIndex
> when creating the hyperlinks.  When they click on a link, I get the
> object they clicked on via the index (supplied by T4).  The index is
> only valid inside the List of objects I've stored off for them as a
> result of the query.  If they monkey with the URL, they can't get data
> that isn't available to them in the first place, and if they change it
> to 20+, it'll throw an exception.  This keeps the PKs out of the picture
> completely and no squeezing needs to be done.  If that makes any sense.
> :-)
> Thanks,
> /dev/mrg
> -----Original Message-----
> From: Steve Wells []
> Sent: Thursday, April 06, 2006 4:07 AM
> To:
> Subject: [ANN] MaCaTa - An introduction by example to 3 frameworks
> Hi all,
> I'd like to announce the first release of MaCaTa - a web application and
> tutorial based on 3 excellent and compatible open source java based
> frameworks...
> Maven-Cayenne-Tapestry.  Hence the highly imaginative name of MaCaTa ;)
> The application is all about allowing a user to manage data, it is all
> (Create, Read, Update, Delete).  For the developer you configure it to
> point to a Cayenne object and it displays a list of data in the
> corresponding
> table and allows the user to work with that data.  There is more
> code-configuration
> available such as the ability to disallow deletes.
> On top of this there is a reasonable amount of documentation that walks
> you
> through
> creating your own applications based on these technologies.  In fact the
> documentation
> is a super-set of what is available in the application itself.
> More information is available at:
> Regards,
> Steve

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message