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>
+
+