You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Abhigyan Agrawal (JIRA)" <ib...@incubator.apache.org> on 2009/02/13 13:07:59 UTC

[jira] Created: (IBATIS-580) SQLExecutor plug-ins for iBATIS2

SQLExecutor plug-ins for iBATIS2
--------------------------------

                 Key: IBATIS-580
                 URL: https://issues.apache.org/jira/browse/IBATIS-580
             Project: iBatis for Java
          Issue Type: Improvement
          Components: SQL Maps
    Affects Versions: 2.3.4
         Environment: Platform independent
            Reporter: Abhigyan Agrawal
             Fix For: 2.3.4


The attached patch file provides the ability in to override the default 'SQLExecutor' if required in v2.

No new test cases need to be added for this functionality, since the existing test cases regress these changes. Attached are the ibatis test suites results executed with these changes.
______________________________________________________________
Attachments:
junitResults.tar - iBATIS test suite results with plug-in changes.
src.tar - Source for plug-in changes.
plugin.patch - patch file for plug-in changes.
______________________________________________________________

Usage Description
    * User defines a property 'sqlExecutor'  in the iBatis properties file. The value is set to the name of the class (user developed) that implements the interface com.ibatis.sqlmap.engine.execution.ISqlExecutor

Description of code changes 
  1. com.ibatis.sqlmap.engine.execution.ISqlExecutor 
       -  new interface which consists of all the public methods of the the default SQLExecutor in iBATIS - com.ibatis.sqlmap.engine.execution.SqlExecutor


  2. com.ibatis.sqlmap.engine.execution.SqlExecutor
       The default SQLExecutor now implements the ISqlExecutor interface

  3. com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate
       - Changed the type of the member variable 'sqlExecutor' to the interface ISqlExectuor
       - changed return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
       - added method setCustomExecutor(string sqlExecutorClass).
              **Instantiates user specified class that implements interface com.ibatis.sqlmap.engine.execution.SqlExecutor

  
   4. com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.java, ExtendedSqlMapClient.java, SqlMapClientImpl.java, com.ibatis.sqlmap.engine.mapping.statement.MappedStatement	
        - changed the return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor

   5. com.ibatis.sqlmap.engine.builder.xml.XmlParserState
	setGlobalProperties() - If the 'sqlExecutor' property is defined in the properties file, reads it and invokes SqlMapExecutorDelegate.setCustomExecutor(valueOfDefinedSqlExecutor)


** The SqlMapExecutorDelegate instantiates the default SQLExecutor in its constructor. Initially had removed this and had the sqlExecutor always instantiated via a setter. With this XmlParserState.setGlobalProperties() always called the setter, to instantiate the Default or user-overridden sqlExecutor. The problem with this was that it is not mandatory to have a ibatis properties file, in which case the XmlParserState.setGlobalProperties() is not invoked. Given the parsing logic, couldn't find a appropriate place to invoke the getter to instantiate the default SQLExecutor and reverted to having it instantiated in the constructor
  setCustomExecutor re-initializes the 'sqlExecutor'. Assumed this is OK, since it is always invoked during config setup and hence also the reinitialization doesn't need to be synchronized.

* It could have been possible to have this via a new property defined in the SqlMapConfig.xml. However given how many folks are probably going to use it, and the amount of changes, chose the property file approach.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (IBATIS-580) SQLExecutor plug-ins for iBATIS2

Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/IBATIS-580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675273#action_12675273 ] 

Clinton Begin commented on IBATIS-580:
--------------------------------------

I should be able to look at this in the next two weeks.

> SQLExecutor plug-ins for iBATIS2
> --------------------------------
>
>                 Key: IBATIS-580
>                 URL: https://issues.apache.org/jira/browse/IBATIS-580
>             Project: iBatis for Java
>          Issue Type: Improvement
>          Components: SQL Maps
>    Affects Versions: 2.3.4
>         Environment: Platform independent
>            Reporter: Abhigyan Agrawal
>             Fix For: 2.3.4
>
>         Attachments: junitResults.tar, plugin.patch, src.tar
>
>
> The attached patch file provides the ability in to override the default 'SQLExecutor' if required in v2.
> No new test cases need to be added for this functionality, since the existing test cases regress these changes. Attached are the ibatis test suites results executed with these changes.
> ______________________________________________________________
> Attachments:
> junitResults.tar - iBATIS test suite results with plug-in changes.
> src.tar - Source for plug-in changes.
> plugin.patch - patch file for plug-in changes.
> ______________________________________________________________
> Usage Description
>     * User defines a property 'sqlExecutor'  in the iBatis properties file. The value is set to the name of the class (user developed) that implements the interface com.ibatis.sqlmap.engine.execution.ISqlExecutor
> Description of code changes 
>   1. com.ibatis.sqlmap.engine.execution.ISqlExecutor 
>        -  new interface which consists of all the public methods of the the default SQLExecutor in iBATIS - com.ibatis.sqlmap.engine.execution.SqlExecutor
>   2. com.ibatis.sqlmap.engine.execution.SqlExecutor
>        The default SQLExecutor now implements the ISqlExecutor interface
>   3. com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate
>        - Changed the type of the member variable 'sqlExecutor' to the interface ISqlExectuor
>        - changed return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>        - added method setCustomExecutor(string sqlExecutorClass).
>               **Instantiates user specified class that implements interface com.ibatis.sqlmap.engine.execution.SqlExecutor
>   
>    4. com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.java, ExtendedSqlMapClient.java, SqlMapClientImpl.java, com.ibatis.sqlmap.engine.mapping.statement.MappedStatement	
>         - changed the return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>    5. com.ibatis.sqlmap.engine.builder.xml.XmlParserState
> 	setGlobalProperties() - If the 'sqlExecutor' property is defined in the properties file, reads it and invokes SqlMapExecutorDelegate.setCustomExecutor(valueOfDefinedSqlExecutor)
> ** The SqlMapExecutorDelegate instantiates the default SQLExecutor in its constructor. Initially had removed this and had the sqlExecutor always instantiated via a setter. With this XmlParserState.setGlobalProperties() always called the setter, to instantiate the Default or user-overridden sqlExecutor. The problem with this was that it is not mandatory to have a ibatis properties file, in which case the XmlParserState.setGlobalProperties() is not invoked. Given the parsing logic, couldn't find a appropriate place to invoke the getter to instantiate the default SQLExecutor and reverted to having it instantiated in the constructor
>   setCustomExecutor re-initializes the 'sqlExecutor'. Assumed this is OK, since it is always invoked during config setup and hence also the reinitialization doesn't need to be synchronized.
> * It could have been possible to have this via a new property defined in the SqlMapConfig.xml. However given how many folks are probably going to use it, and the amount of changes, chose the property file approach.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (IBATIS-580) SQLExecutor plug-ins for iBATIS2

Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/IBATIS-580?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Clinton Begin closed IBATIS-580.
--------------------------------

    Resolution: Fixed
      Assignee: Clinton Begin

Fixed.  Mostly as described, with some refactorings to use naming conventions.  

Property to override SqlExecutor implementation is 'named sql_executor_class'


> SQLExecutor plug-ins for iBATIS2
> --------------------------------
>
>                 Key: IBATIS-580
>                 URL: https://issues.apache.org/jira/browse/IBATIS-580
>             Project: iBatis for Java
>          Issue Type: Improvement
>          Components: SQL Maps
>    Affects Versions: 2.3.4
>         Environment: Platform independent
>            Reporter: Abhigyan Agrawal
>            Assignee: Clinton Begin
>             Fix For: 2.3.4
>
>         Attachments: junitResults.tar, plugin.patch, src.tar
>
>
> The attached patch file provides the ability in to override the default 'SQLExecutor' if required in v2.
> No new test cases need to be added for this functionality, since the existing test cases regress these changes. Attached are the ibatis test suites results executed with these changes.
> ______________________________________________________________
> Attachments:
> junitResults.tar - iBATIS test suite results with plug-in changes.
> src.tar - Source for plug-in changes.
> plugin.patch - patch file for plug-in changes.
> ______________________________________________________________
> Usage Description
>     * User defines a property 'ibatis.sqlExecutor_class'  in the iBatis properties file. The value is set to the name of the class (user developed) that implements the interface com.ibatis.sqlmap.engine.execution.ISqlExecutor
> Description of code changes 
>   1. com.ibatis.sqlmap.engine.execution.ISqlExecutor 
>        -  new interface which consists of all the public methods of the the default SQLExecutor in iBATIS - com.ibatis.sqlmap.engine.execution.SqlExecutor
>   2. com.ibatis.sqlmap.engine.execution.SqlExecutor
>        The default SQLExecutor now implements the ISqlExecutor interface
>   3. com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate
>        - Changed the type of the member variable 'sqlExecutor' to the interface ISqlExectuor
>        - changed return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>        - added method setCustomExecutor(string sqlExecutorClass).
>               **Instantiates user specified class that implements interface com.ibatis.sqlmap.engine.execution.SqlExecutor
>   
>    4. com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.java, ExtendedSqlMapClient.java, SqlMapClientImpl.java, com.ibatis.sqlmap.engine.mapping.statement.MappedStatement	
>         - changed the return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>    5. com.ibatis.sqlmap.engine.builder.xml.XmlParserState
> 	setGlobalProperties() - If the 'ibatis.sqlExecutor_class' property is defined in the properties file, reads it and invokes SqlMapExecutorDelegate.setCustomExecutor(valueOfDefinedSqlExecutor)
> ** The SqlMapExecutorDelegate instantiates the default SQLExecutor in its constructor. Initially had removed this and had the sqlExecutor always instantiated via a setter. With this XmlParserState.setGlobalProperties() always called the setter, to instantiate the Default or user-overridden sqlExecutor. The problem with this was that it is not mandatory to have a ibatis properties file, in which case the XmlParserState.setGlobalProperties() is not invoked. Given the parsing logic, couldn't find a appropriate place to invoke the getter to instantiate the default SQLExecutor and reverted to having it instantiated in the constructor
>   setCustomExecutor re-initializes the 'sqlExecutor'. Assumed this is OK, since it is always invoked during config setup and hence also the reinitialization doesn't need to be synchronized.
> * It could have been possible to have this via a new property defined in the SqlMapConfig.xml. However given how many folks are probably going to use it, and the amount of changes, chose the property file approach.
> ---- 4 March 2009: Changed property name from 'sqlExecutor' to 'ibatis.sqlExecutor_class'. Updated patch and source. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (IBATIS-580) SQLExecutor plug-ins for iBATIS2

Posted by "Kai Grabfelder (JIRA)" <ib...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/IBATIS-580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693547#action_12693547 ] 

Kai Grabfelder edited comment on IBATIS-580 at 3/29/09 5:12 AM:
----------------------------------------------------------------

moving fix version to 2.3.5, 2.3.4 was released last year ;-) (was commited by cbegin with rev 753103)

      was (Author: kaig):
    moving fix version to 2.3.5, 2.3.4 was released last year ;-)
  
> SQLExecutor plug-ins for iBATIS2
> --------------------------------
>
>                 Key: IBATIS-580
>                 URL: https://issues.apache.org/jira/browse/IBATIS-580
>             Project: iBatis for Java
>          Issue Type: Improvement
>          Components: SQL Maps
>    Affects Versions: 2.3.4
>         Environment: Platform independent
>            Reporter: Abhigyan Agrawal
>            Assignee: Clinton Begin
>             Fix For: 2.3.5
>
>         Attachments: junitResults.tar, plugin.patch, src.tar
>
>
> The attached patch file provides the ability in to override the default 'SQLExecutor' if required in v2.
> No new test cases need to be added for this functionality, since the existing test cases regress these changes. Attached are the ibatis test suites results executed with these changes.
> ______________________________________________________________
> Attachments:
> junitResults.tar - iBATIS test suite results with plug-in changes.
> src.tar - Source for plug-in changes.
> plugin.patch - patch file for plug-in changes.
> ______________________________________________________________
> Usage Description
>     * User defines a property 'ibatis.sqlExecutor_class'  in the iBatis properties file. The value is set to the name of the class (user developed) that implements the interface com.ibatis.sqlmap.engine.execution.ISqlExecutor
> Description of code changes 
>   1. com.ibatis.sqlmap.engine.execution.ISqlExecutor 
>        -  new interface which consists of all the public methods of the the default SQLExecutor in iBATIS - com.ibatis.sqlmap.engine.execution.SqlExecutor
>   2. com.ibatis.sqlmap.engine.execution.SqlExecutor
>        The default SQLExecutor now implements the ISqlExecutor interface
>   3. com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate
>        - Changed the type of the member variable 'sqlExecutor' to the interface ISqlExectuor
>        - changed return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>        - added method setCustomExecutor(string sqlExecutorClass).
>               **Instantiates user specified class that implements interface com.ibatis.sqlmap.engine.execution.SqlExecutor
>   
>    4. com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.java, ExtendedSqlMapClient.java, SqlMapClientImpl.java, com.ibatis.sqlmap.engine.mapping.statement.MappedStatement	
>         - changed the return type of method getSqlExecutor() to ISqlExecutor from SqlExecutor
>    5. com.ibatis.sqlmap.engine.builder.xml.XmlParserState
> 	setGlobalProperties() - If the 'ibatis.sqlExecutor_class' property is defined in the properties file, reads it and invokes SqlMapExecutorDelegate.setCustomExecutor(valueOfDefinedSqlExecutor)
> ** The SqlMapExecutorDelegate instantiates the default SQLExecutor in its constructor. Initially had removed this and had the sqlExecutor always instantiated via a setter. With this XmlParserState.setGlobalProperties() always called the setter, to instantiate the Default or user-overridden sqlExecutor. The problem with this was that it is not mandatory to have a ibatis properties file, in which case the XmlParserState.setGlobalProperties() is not invoked. Given the parsing logic, couldn't find a appropriate place to invoke the getter to instantiate the default SQLExecutor and reverted to having it instantiated in the constructor
>   setCustomExecutor re-initializes the 'sqlExecutor'. Assumed this is OK, since it is always invoked during config setup and hence also the reinitialization doesn't need to be synchronized.
> * It could have been possible to have this via a new property defined in the SqlMapConfig.xml. However given how many folks are probably going to use it, and the amount of changes, chose the property file approach.
> ---- 4 March 2009: Changed property name from 'sqlExecutor' to 'ibatis.sqlExecutor_class'. Updated patch and source. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.