Change access modifiers from private to protected in many classes to allow 
developers to create extensions and subclasses to the iBatis classes
-----------------------------------------------------------------------------------------------------------------------------------------------

         Key: IBATIS-205
         URL: http://issues.apache.org/jira/browse/IBATIS-205
     Project: iBatis for Java
        Type: Improvement
  Components: SQL Maps  
    Versions: 2.1.5    
    Reporter: Jeff Roberts
    Priority: Minor


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.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to