Author: cbegin
Date: Mon Sep  1 00:07:05 2008
New Revision: 690867

URL: http://svn.apache.org/viewvc?rev=690867&view=rev
Log:
Added skeleton for Monarch XML configuration API

Added:
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/MapperFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/BaseParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperConfigParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperEntityResolver.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperFactoryBuilder.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MonarchConfiguration.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/Environment.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/DataSourceFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/JndiDataSourceFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/PooledDataSourceFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/UnpooledDataSourceFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManager.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManagerFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/BlogMapper.xml
    
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/MapperConfig.xml
Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/SimpleDataSource.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ResultObjectFactoryImpl.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PoolState.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PooledDataSource.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/plugin/Interceptor.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/DefaultObjectFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/ObjectFactory.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xml/NodeletContext.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/PooledDataSourceTest.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/SimpleDataSource.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/SimpleDataSource.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/SimpleDataSource.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/SimpleDataSource.java
 Mon Sep  1 00:07:05 2008
@@ -46,10 +46,10 @@
         throw new RuntimeException("SimpleDataSource: Some properties were not 
set.");
       }
 
-      setJdbcDriver((String) props.get(PROP_JDBC_DRIVER));
-      setJdbcUrl((String) props.get(PROP_JDBC_URL));
-      setJdbcUsername((String) props.get(PROP_JDBC_USERNAME));
-      setJdbcPassword((String) props.get(PROP_JDBC_PASSWORD));
+      setDriver((String) props.get(PROP_JDBC_DRIVER));
+      setUrl((String) props.get(PROP_JDBC_URL));
+      setUsername((String) props.get(PROP_JDBC_USERNAME));
+      setPassword((String) props.get(PROP_JDBC_PASSWORD));
 
       setPoolMaximumActiveConnections(
           props.containsKey(PROP_POOL_MAX_ACTIVE_CONN)
@@ -85,13 +85,13 @@
               ? Integer.parseInt((String) 
props.get(PROP_POOL_PING_CONN_NOT_USED_FOR))
               : 0);
 
-      setJdbcDefaultAutoCommit(
+      setDefaultAutoCommit(
           props.containsKey(PROP_JDBC_DEFAULT_AUTOCOMMIT)
               && Boolean.valueOf((String) 
props.get(PROP_JDBC_DEFAULT_AUTOCOMMIT)).booleanValue());
 
       Properties driverProps = new Properties();
-      driverProps.setProperty("user", getJdbcUsername());
-      driverProps.setProperty("password", getJdbcPassword());
+      driverProps.setProperty("user", getUsername());
+      driverProps.setProperty("password", getPassword());
       for (Map.Entry entry : (Set<Map.Entry>) props.entrySet()) {
         String name = (String) entry.getKey();
         String value = (String) entry.getValue();
@@ -99,9 +99,9 @@
           driverProps.put(name.substring(ADD_DRIVER_PROPS_PREFIX_LENGTH), 
value);
         }
       }
-      setJdbcDriverProperties(driverProps);
+      setDriverProperties(driverProps);
 
-      Resources.classForName(getJdbcDriver()).newInstance();
+      Resources.classForName(getDriver()).newInstance();
 
       if (isPoolPingEnabled() && (!props.containsKey(PROP_POOL_PING_QUERY) ||
           getPoolPingQuery().trim().length() == 0)) {

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/FlushCacheInterceptor.java
 Mon Sep  1 00:07:05 2008
@@ -33,6 +33,9 @@
     return Plugin.wrap(target, this);
   }
 
+  public void setProperties(Properties properties) {
+  }
+
   public void addFlushOnExecute(String statementId, Cache cache) {
     Set<Cache> cachesToFlush = flushCacheMap.get(statementId);
     if (cachesToFlush == null) {

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java
 Mon Sep  1 00:07:05 2008
@@ -190,16 +190,11 @@
     String type = context.getStringAttribute("type");
     Class factoryClass = Class.forName(type);
     ObjectFactory factory = (ObjectFactory) factoryClass.newInstance();
+    Properties props = context.getChildrenAsProperties();
+    factory.setProperties(props);
     config.setObjectFactory(factory);
   }
-
-  @Nodelet("/sqlMapConfig/resultObjectFactory/property")
-  public void sqlMapConfigresultObjectFactoryproperty(NodeletContext context) 
throws Exception {
-    String name = context.getStringAttribute("name");
-    String value = context.getStringAttribute("value");
-    config.getObjectFactory().setProperty(name, value);
-  }
-
+  
   @Nodelet("/sqlMapConfig/sqlMap")
   public void sqlMapConfigsqlMap(NodeletContext context) throws Exception {
     String resource = context.getStringAttribute("resource");

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ResultObjectFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ResultObjectFactoryImpl.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ResultObjectFactoryImpl.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/test/java/com/ibatis/sqlmap/ResultObjectFactoryImpl.java
 Mon Sep  1 00:07:05 2008
@@ -3,7 +3,7 @@
 import org.apache.ibatis.reflection.ObjectFactory;
 import testdomain.*;
 
-import java.util.List;
+import java.util.*;
 
 /**
  * @author Jeff Butler
@@ -39,6 +39,6 @@
     return create(type);
   }
 
-  public void setProperty(String name, String value) {
+  public void setProperties(Properties properties) {
   }
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PoolState.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PoolState.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PoolState.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PoolState.java
 Mon Sep  1 00:07:05 2008
@@ -66,10 +66,10 @@
   public synchronized String toString() {
     StringBuffer buffer = new StringBuffer();
     
buffer.append("\n===CONFINGURATION==============================================");
-    buffer.append("\n jdbcDriver                     
").append(dataSource.getJdbcDriver());
-    buffer.append("\n jdbcUrl                        
").append(dataSource.getJdbcUrl());
-    buffer.append("\n jdbcUsername                   
").append(dataSource.getJdbcUsername());
-    buffer.append("\n jdbcPassword                   
").append((dataSource.getJdbcPassword() == null ? "NULL" : "************"));
+    buffer.append("\n jdbcDriver                     
").append(dataSource.getDriver());
+    buffer.append("\n jdbcUrl                        
").append(dataSource.getUrl());
+    buffer.append("\n jdbcUsername                   
").append(dataSource.getUsername());
+    buffer.append("\n jdbcPassword                   
").append((dataSource.getPassword() == null ? "NULL" : "************"));
     buffer.append("\n poolMaxActiveConnections       
").append(dataSource.poolMaximumActiveConnections);
     buffer.append("\n poolMaxIdleConnections         
").append(dataSource.poolMaximumIdleConnections);
     buffer.append("\n poolMaxCheckoutTime            
").append(dataSource.poolMaximumCheckoutTime);

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PooledDataSource.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PooledDataSource.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PooledDataSource.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/PooledDataSource.java
 Mon Sep  1 00:07:05 2008
@@ -73,32 +73,32 @@
     return DriverManager.getLogWriter();
   }
 
-  public void setJdbcDriver(String jdbcDriver) {
-    dataSource.setDriver(jdbcDriver);
+  public void setDriver(String driver) {
+    dataSource.setDriver(driver);
     forceCloseAll();
   }
 
-  public void setJdbcUrl(String jdbcUrl) {
-    dataSource.setUrl(jdbcUrl);
+  public void setUrl(String url) {
+    dataSource.setUrl(url);
     forceCloseAll();
   }
 
-  public void setJdbcUsername(String jdbcUsername) {
-    dataSource.setUsername(jdbcUsername);
+  public void setUsername(String username) {
+    dataSource.setUsername(username);
     forceCloseAll();
   }
 
-  public void setJdbcPassword(String jdbcPassword) {
-    dataSource.setPassword(jdbcPassword);
+  public void setPassword(String password) {
+    dataSource.setPassword(password);
     forceCloseAll();
   }
 
-  public void setJdbcDefaultAutoCommit(boolean jdbcDefaultAutoCommit) {
-    dataSource.setAutoCommit(jdbcDefaultAutoCommit);
+  public void setDefaultAutoCommit(boolean defaultAutoCommit) {
+    dataSource.setAutoCommit(defaultAutoCommit);
     forceCloseAll();
   }
 
-  public void setJdbcDriverProperties(Properties driverProps) {
+  public void setDriverProperties(Properties driverProps) {
     dataSource.setDriverProperties(driverProps);
     forceCloseAll();
   }
@@ -175,27 +175,27 @@
     forceCloseAll();
   }
 
-  public String getJdbcDriver() {
+  public String getDriver() {
     return dataSource.getDriver();
   }
 
-  public String getJdbcUrl() {
+  public String getUrl() {
     return dataSource.getUrl();
   }
 
-  public String getJdbcUsername() {
+  public String getUsername() {
     return dataSource.getUsername();
   }
 
-  public String getJdbcPassword() {
+  public String getPassword() {
     return dataSource.getPassword();
   }
 
-  public boolean isJdbcDefaultAutoCommit() {
+  public boolean isAutoCommit() {
     return dataSource.isAutoCommit();
   }
 
-  public Properties getJdbcDriverProperties() {
+  public Properties getDriverProperties() {
     return dataSource.getDriverProperties();
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
 Mon Sep  1 00:07:05 2008
@@ -18,9 +18,9 @@
   private boolean lazyLoadingEnabled = true;
   private boolean enhancementEnabled = false;
   private boolean multipleResultSetsEnabled = true;
-  private boolean generatedKeysEnabled = true;
+  private boolean generatedKeysEnabled = false;
   private boolean useColumnLabel = true;
-  private boolean cacheEnabled;
+  private boolean cacheEnabled = true;
 
   private ExecutorType defaultExecutorType = ExecutorType.SIMPLE;
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/plugin/Interceptor.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/plugin/Interceptor.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/plugin/Interceptor.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/plugin/Interceptor.java
 Mon Sep  1 00:07:05 2008
@@ -1,9 +1,13 @@
 package org.apache.ibatis.plugin;
 
+import java.util.Properties;
+
 public interface Interceptor {
 
   Object intercept(Invocation invocation) throws Throwable;
 
   Object plugin(Object target);
 
+  void setProperties(Properties properties);
+
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/DefaultObjectFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/DefaultObjectFactory.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/DefaultObjectFactory.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/DefaultObjectFactory.java
 Mon Sep  1 00:07:05 2008
@@ -14,7 +14,7 @@
     return instantiateClass(classToCreate, constructorArgTypes, 
constructorArgs);
   }
 
-  public void setProperty(String name, String value) {
+  public void setProperties(Properties properties) {
     // no props for default
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/ObjectFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/ObjectFactory.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/ObjectFactory.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/reflection/ObjectFactory.java
 Mon Sep  1 00:07:05 2008
@@ -1,6 +1,6 @@
 package org.apache.ibatis.reflection;
 
-import java.util.List;
+import java.util.*;
 
 public interface ObjectFactory {
 
@@ -8,6 +8,6 @@
 
   Object create(Class type, List<Class> constructorArgTypes, List<Object> 
constructorArgs);
 
-  void setProperty(String name, String value);
+  void setProperties(Properties properties);
 
 }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xml/NodeletContext.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xml/NodeletContext.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xml/NodeletContext.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/xml/NodeletContext.java
 Mon Sep  1 00:07:05 2008
@@ -2,7 +2,7 @@
 
 import org.w3c.dom.*;
 
-import java.util.Properties;
+import java.util.*;
 
 public class NodeletContext {
 
@@ -172,6 +172,29 @@
     }
   }
 
+  public List<NodeletContext> getChildren() {
+    List<NodeletContext> children = new ArrayList<NodeletContext>();
+    NodeList nodeList = node.getChildNodes();
+    if (nodeList != null) {
+      for (int i=0,n=nodeList.getLength(); i < n; i++) {
+        children.add(new NodeletContext(nodeList.item(i),variables));
+      }
+    }
+    return children;
+  }
+
+  public Properties getChildrenAsProperties() {
+    Properties properties = new Properties();
+    for(NodeletContext child : getChildren()) {
+      String name = child.getStringAttribute("name");
+      String value = child.getStringAttribute("value");
+      if (name != null && value != null) {
+        properties.setProperty(name, value);
+      }
+    }
+    return properties;
+  }
+
   private Properties parseAttributes(Node n) {
     Properties attributes = new Properties();
     NamedNodeMap attributeNodes = n.getAttributes();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java
 Mon Sep  1 00:07:05 2008
@@ -23,10 +23,10 @@
   public static PooledDataSource createPooledDataSource(String resource) 
throws IOException {
     Properties props = Resources.getResourceAsProperties(resource);
     PooledDataSource ds = new PooledDataSource();
-    ds.setJdbcDriver(props.getProperty("driver"));
-    ds.setJdbcUrl(props.getProperty("url"));
-    ds.setJdbcUsername(props.getProperty("username"));
-    ds.setJdbcPassword(props.getProperty("password"));
+    ds.setDriver(props.getProperty("driver"));
+    ds.setUrl(props.getProperty("url"));
+    ds.setUsername(props.getProperty("username"));
+    ds.setPassword(props.getProperty("password"));
     return ds;
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/PooledDataSourceTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/PooledDataSourceTest.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/PooledDataSourceTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/PooledDataSourceTest.java
 Mon Sep  1 00:07:05 2008
@@ -13,8 +13,8 @@
     PooledDataSource ds = createPooledDataSource(JPETSTORE_PROPERTIES);
     try {
       runScript(ds, JPETSTORE_DDL);
-      ds.setJdbcDefaultAutoCommit(false);
-      ds.setJdbcDriverProperties(new Properties() {
+      ds.setDefaultAutoCommit(false);
+      ds.setDriverProperties(new Properties() {
         {
           setProperty("username", "sa");
           setProperty("password", "");

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java?rev=690867&r1=690866&r2=690867&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java
 Mon Sep  1 00:07:05 2008
@@ -31,6 +31,9 @@
     public Object plugin(Object target) {
       return Plugin.wrap(target, this);
     }
+
+    public void setProperties(Properties properties) {
+    }
   }
 
 }

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/MapperFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/MapperFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/MapperFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/MapperFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,4 @@
+package org.apache.ibatis.monarch;
+
+public class MapperFactory {
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/BaseParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/BaseParser.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/BaseParser.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/BaseParser.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,59 @@
+package org.apache.ibatis.monarch.builder;
+
+import org.apache.ibatis.type.*;
+import org.apache.ibatis.xml.NodeletParser;
+import org.apache.ibatis.mapping.Configuration;
+
+import java.io.Reader;
+import java.util.Properties;
+
+public class BaseParser {
+
+  protected Reader reader;
+  protected NodeletParser parser;
+  protected MonarchConfiguration configuration;
+  protected TypeAliasRegistry typeAliasRegistry;
+  protected TypeHandlerRegistry typeHandlerRegistry;
+
+  public void parse() {
+    assert reader != null;
+    assert parser != null;
+    assert configuration != null;
+    assert typeAliasRegistry != null;
+    assert typeHandlerRegistry != null;
+    parser.parse(reader);
+  }
+
+  protected String stringValueOf(String value, String defaultValue) {
+    return value == null ? defaultValue : value;
+  }
+
+  protected Boolean booleanValueOf(String value, Boolean defaultValue) {
+    return value == null ? defaultValue : Boolean.valueOf(value);
+  }
+
+  protected Integer integerValueOf(String value, Integer defaultValue) {
+    return value == null ? defaultValue : Integer.valueOf(value);
+  }
+
+  protected JdbcType resolveJdbcType(String alias) {
+    try {
+      return JdbcType.valueOf(resolveAlias(alias));
+    } catch (IllegalArgumentException e) {
+      throw new RuntimeException("Error resolving JDBC type. Cause: " + e, e);
+    }
+  }
+
+  protected Class resolveClass(String alias) {
+    try {
+      return Class.forName(resolveAlias(alias));
+    } catch (ClassNotFoundException e) {
+      throw new RuntimeException("Error resolving class . Cause: " + e, e);
+    }
+  }
+
+  protected String resolveAlias(String alias) {
+    return typeAliasRegistry.resolveAlias(alias);
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperConfigParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperConfigParser.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperConfigParser.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperConfigParser.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,169 @@
+package org.apache.ibatis.monarch.builder;
+
+import org.apache.ibatis.xml.*;
+import org.apache.ibatis.mapping.*;
+import org.apache.ibatis.type.*;
+import org.apache.ibatis.plugin.Interceptor;
+import org.apache.ibatis.reflection.*;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.monarch.environment.Environment;
+import 
org.apache.ibatis.monarch.environment.transaction.TransactionManagerFactory;
+import org.apache.ibatis.monarch.environment.datasource.DataSourceFactory;
+
+import java.io.Reader;
+import java.util.*;
+
+public class MapperConfigParser extends BaseParser {
+
+  private Environment.Builder environmentBuilder;
+
+  public MapperConfigParser(Reader reader, Properties props) {
+    this.reader = reader;
+
+    this.configuration = new MonarchConfiguration();
+    this.configuration.setVariables(props);
+    this.typeAliasRegistry = this.configuration.getTypeAliasRegistry();
+    this.typeHandlerRegistry = this.configuration.getTypeHandlerRegistry();
+
+    this.parser = new NodeletParser();
+    this.parser.addNodeletHandler(this);
+    this.parser.setVariables(props);
+    this.parser.setEntityResolver(new MapperEntityResolver());
+  }
+
+  public MonarchConfiguration getConfiguration() {
+    return configuration;
+  }
+
+  // <typeAlias alias="" type=""/>
+  @Nodelet("/configuration/typeAliases/typeAlias")
+  public void typeAliasElement(NodeletContext context) throws Exception {
+    String alias = context.getStringAttribute("alias");
+    String type = context.getStringAttribute("type");
+    typeAliasRegistry.registerAlias(alias, type);
+  }
+
+  // <plugin interceptor="">
+  //   <property name="" value=""/>
+  @Nodelet("/configuration/plugins/plugin")
+  public void pluginElement(NodeletContext context) throws Exception {
+    String interceptor = context.getStringAttribute("interceptor");
+    Properties properties = context.getChildrenAsProperties();
+    Interceptor interceptorInstance = (Interceptor) 
resolveClass(interceptor).newInstance();
+    interceptorInstance.setProperties(properties);
+    configuration.addInterceptor(interceptorInstance);
+  }
+
+  // <objectFactory type="">
+  //   <property name="" value=""/>
+  @Nodelet("/configuration/objectFactory")
+  public void objectFactoryElement(NodeletContext context) throws Exception {
+    String type = context.getStringAttribute("type");
+    Properties properties = context.getChildrenAsProperties();
+    ObjectFactory factory = (ObjectFactory)resolveClass(type).newInstance();
+    factory.setProperties(properties);
+    configuration.setObjectFactory(factory);
+  }
+
+  // <settings>
+  //   <setting name="" value=""/>
+  @Nodelet("/configuration/settings")
+  public void settingsElement(NodeletContext context) throws Exception {
+    Properties props = context.getChildrenAsProperties();
+    
configuration.setCacheEnabled(booleanValueOf(props.getProperty("cacheEnabled"),true));
+    
configuration.setLazyLoadingEnabled(booleanValueOf(props.getProperty("lazyLoadingEnabled"),true));
+    
configuration.setMultipleResultSetsEnabled(booleanValueOf(props.getProperty("multipleResultSetsEnabled"),true));
+    
configuration.setUseColumnLabel(booleanValueOf(props.getProperty("useColumnLabel"),true));
+    
configuration.setEnhancementEnabled(booleanValueOf(props.getProperty("enhancementEnabled"),false));
+    
configuration.setGeneratedKeysEnabled(booleanValueOf(props.getProperty("generatedKeysEnabled"),false));
+    
configuration.setDefaultExecutorType(ExecutorType.valueOf(stringValueOf(props.getProperty("defaultExecutorType"),"SIMPLE")));
+    
configuration.setDefaultStatementTimeout(integerValueOf(props.getProperty("defaultStatementTimeout"),null));
+    for (Map.Entry entry : props.entrySet()) {
+      MetaClass metaConfig = MetaClass.forClass(Configuration.class);
+      if (!metaConfig.hasSetter((String)entry.getKey())) {
+        throw new RuntimeException("The setting " + entry.getKey() + " is not 
known.  Make sure you spelled it correctly (case sensitive).");
+      }
+    }
+  }
+
+  // <environments default="development">
+  @Nodelet("/configuration/environments")
+  public void environmentsElement(NodeletContext context) throws Exception {
+    String defaultEnv = context.getStringAttribute("default","default");
+    configuration.setDefaultEnvironment(defaultEnv);
+  }
+
+  // <environment id="development">
+  @Nodelet("/configuration/environments/environment")
+  public void environmentElement(NodeletContext context) throws Exception {
+    String id = context.getStringAttribute("id","default");
+    environmentBuilder = new Environment.Builder(id);
+  }
+
+  // <transactionManager type="JDBC|JTA|EXTERNAL">
+  //   <property name="" value=""/>
+  @Nodelet("/configuration/environments/environment/transactionManager")
+  public void transactionManagerElement(NodeletContext context) throws 
Exception {
+    String type = context.getStringAttribute("type");
+    Properties props = context.getChildrenAsProperties();
+
+    TransactionManagerFactory factory = (TransactionManagerFactory) 
resolveClass(type).newInstance();
+    factory.setProperties(props);
+
+    environmentBuilder.transactionManager(factory.getTransactionManager());
+  }
+
+  // <dataSource type="POOLED|UNPOOLED|JNDI">
+  //   <property name="" value=""/>
+  @Nodelet("/configuration/environments/environment/dataSource")
+  public void dataSourceElement(NodeletContext context) throws Exception {
+    String type = context.getStringAttribute("type");
+    Properties props = context.getChildrenAsProperties();
+
+    DataSourceFactory factory = (DataSourceFactory) 
resolveClass(type).newInstance();
+    factory.setProperties(props);
+
+    environmentBuilder.dataSource(factory.getDataSource());
+  }
+
+  // </environment>
+  @Nodelet("/configuration/environments/environment/end()")
+  public void environmentClosingElement(NodeletContext context) throws 
Exception {
+    configuration.addEnvironment(environmentBuilder.build());
+  }
+
+  // <typeHandler javaType="" jdbcType="" handler=""/>
+  @Nodelet("/configuration/typeHandlers/typeHandler")
+  public void typeHandlerElement(NodeletContext context) throws Exception {
+    String javaType = context.getStringAttribute("javaType");
+    String jdbcType = context.getStringAttribute("jdbcType");
+    String handler = context.getStringAttribute("handler");
+
+    Class javaTypeClass = resolveClass(javaType);
+    TypeHandler typeHandlerInstance = (TypeHandler) 
resolveClass(handler).newInstance();
+
+    if (jdbcType == null) {
+      typeHandlerRegistry.register(javaTypeClass, typeHandlerInstance);
+    } else {
+      typeHandlerRegistry.register(javaTypeClass, resolveJdbcType(jdbcType), 
typeHandlerInstance);
+    }
+  }
+
+  // <mapper url="" resource="resources/AnotherMapper.xml"/>
+  @Nodelet("/configuration/mappers/mapper")
+  public void mapperElement(NodeletContext context) throws Exception {
+    String resource = context.getStringAttribute("resource");
+    String url = context.getStringAttribute("url");
+    Reader reader;
+    if (resource != null && url == null) {
+      reader = Resources.getResourceAsReader(resource);
+    } else if (url != null && resource == null) {
+      reader = Resources.getUrlAsReader(url);
+    } else {
+      throw new RuntimeException("A mapper element may only specify a url or 
resource, but not both.");
+    }
+    MapperParser mapperParser = new MapperParser(reader,configuration);
+    mapperParser.parse();
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperEntityResolver.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperEntityResolver.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperEntityResolver.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperEntityResolver.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,68 @@
+package org.apache.ibatis.monarch.builder;
+
+import org.xml.sax.*;
+import org.apache.ibatis.io.Resources;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ * Offline entity resolver for the iBATIS DTDs
+ */
+public class MapperEntityResolver implements EntityResolver {
+
+  private static final String MAPPER_CONFIG_DTD_RESOURCE = 
"org/apache/ibatis/monarch/dtd/mapper-config.dtd";
+  private static final String MAPPER_DTD_RESOURCE = 
"org/apache/ibatis/monarch/dtd/mapper.dtd";
+
+  private static final Map<String, String> doctypeMap = new HashMap<String, 
String>();
+
+  static {
+    
doctypeMap.put("http://ibatis.apache.org/dtd/mapper-config-3.dtd".toUpperCase(),
 MAPPER_CONFIG_DTD_RESOURCE);
+    doctypeMap.put("-//ibatis.apache.org//DTD Mapper Config 
2.0//EN".toUpperCase(), MAPPER_CONFIG_DTD_RESOURCE);
+
+    doctypeMap.put("http://ibatis.apache.org/dtd/mapper-3.dtd".toUpperCase(), 
MAPPER_DTD_RESOURCE);
+    doctypeMap.put("-//ibatis.apache.org//DTD Mapper 3.0//EN".toUpperCase(), 
MAPPER_DTD_RESOURCE);
+  }
+
+  /**
+   * Converts a public DTD into a local one
+   *
+   * @param publicId Unused but required by EntityResolver interface
+   * @param systemId The DTD that is being requested
+   * @return The InputSource for the DTD
+   * @throws org.xml.sax.SAXException If anything goes wrong
+   */
+  public InputSource resolveEntity(String publicId, String systemId)
+      throws SAXException {
+
+    if (publicId != null) publicId = publicId.toUpperCase();
+    if (systemId != null) systemId = systemId.toUpperCase();
+
+    InputSource source = null;
+    try {
+      String path = doctypeMap.get(publicId);
+      source = getInputSource(path, source);
+      if (source == null) {
+        path = doctypeMap.get(systemId);
+        source = getInputSource(path, source);
+      }
+    } catch (Exception e) {
+      throw new SAXException(e.toString());
+    }
+    return source;
+  }
+
+  private InputSource getInputSource(String path, InputSource source) {
+    if (path != null) {
+      InputStream in;
+      try {
+        in = Resources.getResourceAsStream(path);
+        source = new InputSource(in);
+      } catch (IOException e) {
+        // ignore, null is ok
+      }
+    }
+    return source;
+  }
+
+}
\ No newline at end of file

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperFactoryBuilder.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperFactoryBuilder.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperFactoryBuilder.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperFactoryBuilder.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,7 @@
+package org.apache.ibatis.monarch.builder;
+
+public class MapperFactoryBuilder {
+
+
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperParser.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperParser.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MapperParser.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,24 @@
+package org.apache.ibatis.monarch.builder;
+
+import org.apache.ibatis.xml.NodeletParser;
+
+import java.io.Reader;
+
+public class MapperParser extends BaseParser {
+
+  public MapperParser(Reader reader, MonarchConfiguration configuration) {
+    this.reader = reader;
+
+    this.configuration = configuration;
+    this.typeAliasRegistry = configuration.getTypeAliasRegistry();
+    this.typeHandlerRegistry = configuration.getTypeHandlerRegistry();
+
+    this.parser = new NodeletParser();
+    this.parser.addNodeletHandler(this);
+    this.parser.setVariables(configuration.getVariables());
+    this.parser.setEntityResolver(new MapperEntityResolver());
+  }
+
+
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MonarchConfiguration.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MonarchConfiguration.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MonarchConfiguration.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/builder/MonarchConfiguration.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,28 @@
+package org.apache.ibatis.monarch.builder;
+
+import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.monarch.environment.Environment;
+
+import java.util.*;
+
+public class MonarchConfiguration extends Configuration {
+
+  private String defaultEnvironment;
+  private Map<String,Environment> environmentMap = new 
HashMap<String,Environment>();
+
+  public String getDefaultEnvironment() {
+    return defaultEnvironment;
+  }
+
+  public void setDefaultEnvironment(String defaultEnvironment) {
+    this.defaultEnvironment = defaultEnvironment;
+  }
+
+  public void addEnvironment(Environment environment) {
+    if(environmentMap.containsKey(environment.getId())) {
+      throw new RuntimeException("Duplicate environment ID detected: " + 
environment.getId() + ".  Environment ID must be unique.");
+    }
+    environmentMap.put(environment.getId(),environment);
+  }
+}
+

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/Environment.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/Environment.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/Environment.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/Environment.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,44 @@
+package org.apache.ibatis.monarch.environment;
+
+import org.apache.ibatis.monarch.environment.transaction.TransactionManager;
+
+import javax.sql.DataSource;
+
+public class Environment {
+  private String id;
+  private TransactionManager transactionManager;
+  private DataSource dataSource;
+
+  private Environment() {}
+
+  public static class Builder {
+    private Environment environment = new Environment();
+    public Builder(String id) {
+      environment.id = id;
+    }
+    public Builder transactionManager(TransactionManager transactionManager) {
+      environment.transactionManager = transactionManager;
+      return this;
+    }
+    public Builder dataSource(DataSource dataSource) {
+      environment.dataSource = dataSource;
+      return this;
+    }
+    public Environment build() {
+      return environment;
+    }
+  }
+
+  public String getId() {
+    return id;
+  }
+
+  public TransactionManager getTransactionManager() {
+    return transactionManager;
+  }
+
+  public DataSource getDataSource() {
+    return dataSource;
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/DataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/DataSourceFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/DataSourceFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/DataSourceFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,11 @@
+package org.apache.ibatis.monarch.environment.datasource;
+
+import javax.sql.DataSource;
+import java.util.Properties;
+
+public interface DataSourceFactory {
+
+  void setProperties(Properties props);
+  DataSource getDataSource();
+  
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/JndiDataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/JndiDataSourceFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/JndiDataSourceFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/JndiDataSourceFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,59 @@
+package org.apache.ibatis.monarch.environment.datasource;
+
+import javax.naming.*;
+import javax.sql.DataSource;
+import java.util.*;
+
+public class JndiDataSourceFactory implements DataSourceFactory {
+
+  private DataSource dataSource;
+  private static final String INITIAL_CONTEXT = "initialContext";
+  private static final String DATA_SOURCE = "dataSource";
+  private static final String CONTEXT_PREFIX = "context.";
+
+  public void setProperties(Properties properties) {
+    try {
+      InitialContext initCtx = null;
+      Hashtable context = getContextProperties(properties);
+
+      if (context == null) {
+        initCtx = new InitialContext();
+      } else {
+        initCtx = new InitialContext(context);
+      }
+
+      if (properties.containsKey(INITIAL_CONTEXT)
+          && properties.containsKey(DATA_SOURCE)) {
+        Context ctx = (Context) initCtx.lookup((String) 
properties.get(INITIAL_CONTEXT));
+        dataSource = (DataSource) ctx.lookup((String) 
properties.get(DATA_SOURCE));
+      } else if (properties.containsKey(DATA_SOURCE)) {
+        dataSource = (DataSource) initCtx.lookup((String) 
properties.get(DATA_SOURCE));
+      }
+
+    } catch (NamingException e) {
+      throw new RuntimeException("There was an error configuring 
JndiDataSourceTransactionPool. Cause: " + e, e);
+    }
+  }
+
+  public DataSource getDataSource() {
+    return dataSource;
+  }
+
+  private static Hashtable getContextProperties(Map allProps) {
+    final String PREFIX = CONTEXT_PREFIX;
+    Hashtable contextProperties = null;
+    Iterator keys = allProps.keySet().iterator();
+    while (keys.hasNext()) {
+      String key = (String) keys.next();
+      String value = (String) allProps.get(key);
+      if (key.startsWith(PREFIX)) {
+        if (contextProperties == null) {
+          contextProperties = new Properties();
+        }
+        contextProperties.put(key.substring(PREFIX.length()), value);
+      }
+    }
+    return contextProperties;
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/PooledDataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/PooledDataSourceFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/PooledDataSourceFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/PooledDataSourceFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,11 @@
+package org.apache.ibatis.monarch.environment.datasource;
+
+import org.apache.ibatis.jdbc.PooledDataSource;
+
+public class PooledDataSourceFactory extends UnpooledDataSourceFactory {
+
+  public PooledDataSourceFactory() {
+    this.dataSource = new PooledDataSource();
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/UnpooledDataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/UnpooledDataSourceFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/UnpooledDataSourceFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/datasource/UnpooledDataSourceFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,58 @@
+package org.apache.ibatis.monarch.environment.datasource;
+
+import org.apache.ibatis.jdbc.PooledDataSource;
+import org.apache.ibatis.reflection.MetaObject;
+
+import javax.sql.DataSource;
+import java.util.Properties;
+
+public class UnpooledDataSourceFactory implements DataSourceFactory {
+
+  private static final String DRIVER_PROPERTY_PREFIX = "driver.";
+  private static final int DRIVER_PROPERTY_PREFIX_LENGTH = 
DRIVER_PROPERTY_PREFIX.length();
+
+  protected PooledDataSource dataSource;
+
+  public UnpooledDataSourceFactory() {
+    this.dataSource = new PooledDataSource();
+  }
+
+  public void setProperties(Properties properties) {
+    Properties driverProperties = new Properties();
+    MetaObject metaDataSource = MetaObject.forObject(dataSource);
+    for (Object key : properties.keySet()){
+      String propertyName = (String) key;
+      if (propertyName.startsWith(DRIVER_PROPERTY_PREFIX)) {
+        String value = properties.getProperty(propertyName);
+        
driverProperties.setProperty(propertyName.substring(DRIVER_PROPERTY_PREFIX_LENGTH),
 value);
+      } else if (metaDataSource.hasSetter(propertyName)) {
+        String value = (String) properties.get(propertyName);
+        Object convertedValue = convertValue(metaDataSource, propertyName, 
value);
+        metaDataSource.setValue(propertyName, convertedValue);
+      } else {
+        throw new RuntimeException("Unkown DataSource property: " + 
propertyName);
+      }
+    }
+    if (driverProperties.size() > 0) {
+      dataSource.setDriverProperties(driverProperties);
+    }
+  }
+
+  public DataSource getDataSource() {
+    return dataSource;
+  }
+
+  private Object convertValue(MetaObject metaDataSource, String propertyName, 
String value) {
+    Object convertedValue = value;
+    Class targetType = metaDataSource.getSetterType(propertyName);
+    if (targetType == Integer.class || targetType == int.class) {
+      convertedValue = Integer.valueOf(value);
+    } else if (targetType == Long.class || targetType == long.class) {
+      convertedValue = Long.valueOf(value);
+    } else if (targetType == Boolean.class || targetType == boolean.class) {
+      convertedValue = Boolean.valueOf(value);
+    }
+    return convertedValue;
+  }
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManager.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManager.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManager.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManager.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,4 @@
+package org.apache.ibatis.monarch.environment.transaction;
+
+public interface TransactionManager {
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManagerFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManagerFactory.java?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManagerFactory.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/main/java/org/apache/ibatis/monarch/environment/transaction/TransactionManagerFactory.java
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,11 @@
+package org.apache.ibatis.monarch.environment.transaction;
+
+import java.util.Properties;
+
+public interface TransactionManagerFactory {
+
+  void setProperties(Properties props);
+
+  TransactionManager getTransactionManager();
+
+}

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/BlogMapper.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/BlogMapper.xml?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/BlogMapper.xml
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/BlogMapper.xml
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,40 @@
+<mapper type="com.domain.PersonMapper">
+  <defaultCache cacheType="MyLRU" cacheDomain="PersonMapper"/>
+
+  <resultMap id="" type="" extends="">
+    <constructor>
+      <id column="" javaType="" jdbcType="" typeHandler=""/>
+      <result column="" javaType="" jdbcType="" typeHandler=""/>
+    </constructor>
+    <result property="" column="" javaType="" jdbcType="" typeHandler=""/>
+    <collection property="" column="" javaType="" select="" resultMap=""/>
+    <discriminator column="" javaType="" jdbcType="">
+      <case value="" resultMap=""/>
+      <case value="" resultMap=""/>
+      <default value="" resultMap=""/>
+    </discriminator>
+  </resultMap>
+
+  <select id="selectAllPeople" cacheType="" cacheDomain=""
+          flushCache="" parameterType="" resultType="" resultMap="">
+    select * from PERSON order by
+    
${opts.order,javaType="",jdbcType="",typeHandler="",mode="",scale="",resultMap=""}
+  </select>
+  <select id="selectPersonInDept" cacheType="" cacheDomain=""
+          flushCache="" parameterType="" resultType=""
+          resultMap="">
+    <param property="id" javaType="" jdbcType="" typeHandler=""
+           mode="" scale="" resultMap=""/>
+    <param property="dept" javaType="" jdbcType="" typeHandler=""
+           mode="" scale="" resultMap=""/>
+    select * from PERSON
+    where PERSON_ID = #param.id --or #{params.id}
+    <!-- if(expr) foreach(x,expr) dynamic() propavail(name)
+  ... common(prepend,open,conjuction,close) -->
+    <if expr="param.deptId != null">
+      and DEPT_ID =
+      
#{param.deptId,javaType="",jdbcType="",typeHandler="",mode="",scale="",resultMap=""}
+    </if>
+  </select>
+
+</mapper>
\ No newline at end of file

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/MapperConfig.xml
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/MapperConfig.xml?rev=690867&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/MapperConfig.xml
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-monarch/src/test/java/org/apache/ibatis/monarch/example/MapperConfig.xml
 Mon Sep  1 00:07:05 2008
@@ -0,0 +1,52 @@
+<configuration>
+
+  <typeAliases>
+    <typeAlias alias="" type=""/>
+  </typeAliases>
+
+  <plugins>
+    <plugin interceptor="">
+      <property name="" value=""/>
+    </plugin>
+  </plugins>
+
+  <objectFactory type="">
+    <property name="" value=""/>
+  </objectFactory>
+
+  <settings>
+    <setting name="" value=""/>
+    <setting name="" value=""/>
+    <setting name="" value=""/>
+  </settings>
+
+  <caches default="MyLRU">
+    <cache id="myLRU" type="LRU">
+      <properties name="" value=""/>
+    </cache>
+  </caches>
+
+  <environments default="development">
+    <environment id="development">
+      <transactionManager type="JDBC|JTA|EXTERNAL">
+        <property name="" value=""/>
+      </transactionManager>
+      <dataSource type="POOLED|UNPOOLED|JNDI">
+        <property name="" value=""/>
+      </dataSource>
+    </environment>
+  </environments>
+
+  <typeHandlers>
+    <typeHandler javaType="" jdbcType="" handler=""/>
+  </typeHandlers>
+
+  <mappers>
+    <mapper type="com.domain.PersonMapper"/>
+    <mapper type="com.domain.AnotherMapper" xml="resources/AnotherMapper.xml"/>
+    <mapper xml="resources/AnonymousMapper.xml"/>
+  </mappers>
+
+</configuration>
+
+


Reply via email to