ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Butler <jeffgbut...@gmail.com>
Subject Re: Request to change access modifiers
Date Thu, 20 Oct 2005 03:49:57 GMT
Hi Jeff!
 The Cards forgot how to bat AGAIN in the post series :-(
 Your request sounds reasonable to me. Please make a JIRA enhancement
request with the details of what should change from private to protected,
then we'll remember to get to it (maybe someone should take a look at this
in general?)
 As for the extension, I'm not sure what the proper procedure is - maybe one
of the other committers can comment. The list does not allow attachments. If
there is interest from the community, you could attach the sample code to
another JIRA issue - or distribute it informally.
 Jeff Butler

 On 10/19/05, Jeff Roberts <jeff_roberts_ibatis@yahoo.com> wrote:
>
> I have recently added and extension to the iBatis
> framework. In order for my extension to work
> effectively, I had to subclass several of the iBatis
> classes. In doing so, I found that some of the
> methods and variables in the iBatis classes were
> declared as private, preventing me access to them from
> my subclasses.
>
> I changed the following access modifiers in the
> following iBatis classes:
>
> - com.ibatis.sqlmap.client.SqlMapClient
> I changed the default constructor from private to
> protected. This still prevents public instantiation
> of the class, but allows me to instantiate my
> subclass.
>
> -
> com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser
> I changed the static variable "parser" from private to
> protected. This allows me to access the parser from
> my subclass.
>
> I also changed the addSqlMapNodelets() method from
> private to protected, allowing me to override it in my
> subclass and extend its behavior.
>
> - com.ibatis.sqlmap.engine.builder.xml.SqlMapParser
> I changed the static variable "parser" from private to
> protected. This allows me to access the parser from
> my subclass.
>
> I also changed the addStatementNodelets() method from
> private to protected, allowing me to override it in my
> subclass and extend its behavior.
>
> - com.ibatis.sqlmap.engine.impl.SqlMapClientImpl
> I changed the variable "localSqlMapSession" from
> private to protected, allowing my subclass to access
> it.
>
> I also changed the getLocalSqlMapSession() from
> private to protected, allowing me to override it in my
> subclass and extend its behavior.
>
> - com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate
> I changed the variable "sqlExecutor" from private to
> protected, allowing my subclass to access it.
>
> I also changed the autoEndTransaction(),
> autoCommitTransaction() and autoStartTransaction()
> methods from private to protected, allowing my
> subclass to invoke them.
>
> I would like to request that the iBatis development
> team make these same changes to the iBatis source
> code. In my view, it doesn't change any behavior or
> introduce any changes to the source code other than to
> make key pieces of the code accessible to subclasses.
> By making these changes, I can implement an extension
> to iBatis by subclassing the classes I've mentioned
> above and providing an additional feature.
>
> To help bolster my case, I would like to describe my
> extension. I would be happy to submit my extension to
> the iBatis development team for inclusion into the
> framework or as a third party extension. If neither
> is desired, I'm happy to use the extension for my own
> use.
>
> The extension that I have created is to provide an
> alternate mechanism for returning XML as a result of a
> query. While I realize iBatis already provides
> support for XML, this extension is different. My
> understanding is that iBatis can return an XML
> document (DOM) from a result set. This is adequate if
> you wish to use the DOM within the application. My
> extension returns a java.io.InputStream subclass,
> which is a stream of XML derived from a result set.
> The stream is dynamically produced as the InputStream
> is read. This allows you to simply stream it out to a
> caller or run it through an XSLT transformation on the
> server or on the client. It uses SAX callbacks and
> therefore minimizes the memory requirements and can
> handle a virtually unlimited size result set since the
> results are streamed. I've also included support for
> skipping and max results as is the case when querying
> for lists in iBatis. The extension does not require
> anything special in the SELECT statement declaration.
> You can use any select statement for queryForObject,
> queryForList or queryForXml (my extension method). It
> works within the context of the iBatis transaction
> model.
>
> I can attach the source code I've changed in iBatis if
> that helps. I can also provide additional examples or
> explanation of the extension if that would help.
>
> As I just joined the mailing list, I'm not sure what
> my next step should be. I assume someone will respond
> to this request.
>
> Thank you,
> Jeff Roberts
>
> P.S. If Jeff Butler reads this, I'm the Jeff Roberts
> you know from St. Louis.
>
>
>
>
> __________________________________
> Yahoo! Mail - PC Magazine Editors' Choice 2005
> http://mail.yahoo.com
>

Mime
View raw message