ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Roberts <jeff_roberts_iba...@yahoo.com>
Subject Request to change access modifiers
Date Wed, 19 Oct 2005 22:20:18 GMT
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