Have you considered providing an XML view of the rowset? There have
been proposals along that direction for a while, and actually JSR-114
specifically mentions that approach.
http://java.sun.com/aboutJava/communityprocess/jsr/jsr_114_rowset.html
JSR-114 is still quite early so there are no specific proposals to play
with, but you could follow that direction and see what we all learn.
- eduard/o
Bill Pfeiffer wrote:
>
> Morgan,
>
> In my opinion these properties make RowSet useful in the n-tier J2ee
> environment:
>
> 1. It implements ResultSet and can be used anywhere (including your
> ResultSet tags/nested tags) that a ResultSet can
>
> 2. It will cache updates to itself which can be perfromed by the RowSet when
> it is back on a tier that can do the update.
>
> 3. Its serializable so it travels well:)
>
> My goal with my original rework of the DBTags was to allow me to populate my
> RowSet in a Session Bean. The session bean would be called by a Struts
> action. The action puts the returned RowSet into the
> pageContext.setAttribute(), and the tag just yanks the object out of the
> specified context based on attributes set in the tag.
>
> This approach treats the RowSet as a mearly serializable ResultSet. The
> advantage to this is that it provides and easy way to get a mulitrow,
> readonly, dataset from the EJB tier to the presentation tier.
>
> Sticking with this approach, the only changes that would need to be made to
> the ResultSet tag would be how it gets its data. Perhaps adding a
> "datasource" attribute to the tag which would indicate have the following
> possible values:
> "Statement", "Page", "Request", "Session", "Applicaton". This would allow
> for either the actual execution of the Statement OR just yanking a
> "ResultSet" object out of the specified scope.
>
> Here's the code that I added to the beginning of yout
> ResultSetTag::doStartTag() code in place of the execution of the parent
> Statement. Note that RowSet can be replaced with ResultSet and it would
> still behave the same. Also note that _rsScope and rowsetId are attributes
> I added to tell me where to pull the rowset from:
>
> if (_rsScope.toUpperCase().equals("PAGE"))
> {
> _rowset = (RowSet) pageContext.getAttribute(_rowsetId);
> }
> else if (_rsScope.toUpperCase().equals("REQUEST"))
> {
> _rowset = (RowSet) pageContext.getRequest().getAttribute(_rowsetId);
> }
> else if (_rsScope.toUpperCase().equals("SESSION"))
> {
> _rowset = (RowSet) pageContext.getSession().getAttribute(_rowsetId);
> }
> else if (_rsScope.toUpperCase().equals("APPLICATION"))
> {
> _rowset = (RowSet)
> pageContext.getServletContext().getAttribute(_rowsetId);
> }
> else
> {
> throw new JspTagException("Invalid rowset scope value: '" + _rsScope +
> "'");
> }
>
> Modifying the current source to do this shouldn't be too difficult if you
> think its a good idea.
>
> Let me know,
>
> Bill Pfeiffer
>
> ----- Original Message -----
> From: "Morgan Delagrange" <[EMAIL PROTECTED]>
> To: "Taglibs-Dev" <[EMAIL PROTECTED]>
> Cc: "Taglibs-User" <[EMAIL PROTECTED]>
> Sent: Wednesday, May 16, 2001 5:12 PM
> Subject: Re: Proposal: DBTags and RowSet
>
> > Seems like I always send emails in pairs. :)
> >
> > Bill, do you think it would be sufficient to have RowSet tags that
> > paralleled the ResultSet tags but were agnostic as to how the Servlet
> > attribute containing the RowSet was populated? That sounds like a fairly
> > manageable task. Then, I suppose, there would have to be some tag that
> > generates the RowSet itself.
> >
> > On Wed, 16 May 2001, Morgan Delagrange wrote:
> >
> > > Hey Bill,
> > >
> > > I have to admit, I'm not too up on RowSets. I have a general idea what
> > > they're supposed to do, specifically in terms of portability around the
> > > environment, but I don't know them intimately. Do you have any ideas
> > > about how specifically you might alter the API? That might ground your
> > > ideas a bit for me.
> > >
> > > On Tue, 15 May 2001, Bill Pfeiffer wrote:
> > >
> > > > BACKGROUND:
> > > >
> > > > For my current project, I have reworked the DBTags ResultSet tags (and
> > > > nested tags) to pull a javax.sql.RowSet out of a specified scope
> attribute
> > > > and make the RowSet data available. This modification removes the
> > > > statement.execute() call and allows me populate the RowSet in another
> tier
> > > > (EJB). My RowSet tag iterates just like the ResultSet tag and makes
> its
> > > > data available to nested tags in the same manner as ResultSet.
> > > >
> > > > After reviewing what I did, I thought it would make more sense for the
> > > > DBTags to support this, rather than do the rewrite that I did.
> > > >
> > > > PROPOSAL:
> > > >
> > > > I'd like to put forward the question to both the dev and user mailing
> lists:
> > > >
> > > > Does it make sense / would it be useful for the DBTags to have the
> option of
> > > > pulling a ResultSet object from some specified scope, as an
> alternative to
> > > > performing a statment.execute() to obtain a ResultSet?
> > > >
> > > > Note that the object stored in the specified scope COULD be a RowSet
> as
> > > > RowSet implements ResultSet.
> > > >
> > > > BENEFIT(S):
> > > >
> > > > The major benefit of this approach would be the seperation of data
> retrieval
> > > > (business logic) from data presentation.
> > > >
> > > >
> > > > What do you think?
> > > >
> > > > Bill Pfeiffer
> > > >
> > > >
> > >
> > >
> >
> >