Author: cbegin
Date: Mon Apr 20 03:49:34 2009
New Revision: 766566
URL: http://svn.apache.org/viewvc?rev=766566&view=rev
Log:
Updated DTDs to support new dynamic SQL elements
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/PostMapper.xml
Removed:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/ExampleMapper.xml
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/PrefixSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SetSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/WhereSqlNode.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/WeakCacheTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/CachedAuthorMapper.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/XMLMapperEntityResolver.java
Mon Apr 20 03:49:34 2009
@@ -17,10 +17,10 @@
private static final Map<String, String> doctypeMap = new HashMap<String,
String>();
static {
-
doctypeMap.put("http://ibatis.apache.org/dtd/ibatis-config-3.dtd".toUpperCase(),
MAPPER_CONFIG_DTD_RESOURCE);
+
doctypeMap.put("http://ibatis.apache.org/dtd/ibatis-3-config.dtd".toUpperCase(),
MAPPER_CONFIG_DTD_RESOURCE);
doctypeMap.put("-//ibatis.apache.org//DTD Config 3.0//EN".toUpperCase(),
MAPPER_CONFIG_DTD_RESOURCE);
-
doctypeMap.put("http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd".toUpperCase(),
MAPPER_DTD_RESOURCE);
+
doctypeMap.put("http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd".toUpperCase(),
MAPPER_DTD_RESOURCE);
doctypeMap.put("-//ibatis.apache.org//DTD Mapper 3.0//EN".toUpperCase(),
MAPPER_DTD_RESOURCE);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/PrefixSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/PrefixSqlNode.java?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/PrefixSqlNode.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/PrefixSqlNode.java
Mon Apr 20 03:49:34 2009
@@ -5,19 +5,30 @@
public class PrefixSqlNode implements SqlNode {
private SqlNode contents;
- private List<String> stringsToRemove = new ArrayList<String>();
- private String stringToInsert;
+ private String stringToPrefixWith;
+ private List<String> stringsToOverride = new ArrayList<String>();
- public PrefixSqlNode(SqlNode contents, String stringToInsert, List<String>
stringsToRemove) {
+ public PrefixSqlNode(SqlNode contents, String with, String overrides) {
this.contents = contents;
- this.stringsToRemove = stringsToRemove;
- this.stringToInsert = stringToInsert;
+ this.stringToPrefixWith = with;
+ this.stringsToOverride = parseOverrides(overrides);
}
public boolean apply(DynamicContext context) {
return contents.apply(new FilteredDynamicContext(context));
}
+ private List<String> parseOverrides(String overrides) {
+ if (overrides != null) {
+ final StringTokenizer parser = new StringTokenizer(overrides, "|",
false);
+ return new ArrayList<String>() {{
+ while (parser.hasMoreTokens()) {
+ add(parser.nextToken());
+ }}
+ };
+ }
+ return Collections.EMPTY_LIST;
+ }
private class FilteredDynamicContext extends DynamicContext {
private DynamicContext delegate;
@@ -41,14 +52,14 @@
if (!filtered) {
filtered = true;
String filteredSql = sql.trim().toUpperCase();
- for(String toRemove : stringsToRemove) {
+ for (String toRemove : stringsToOverride) {
if (filteredSql.startsWith(toRemove)) {
sql = sql.trim().substring(toRemove.trim().length()).trim();
break;
}
}
- if (stringToInsert != null) {
- delegate.appendSql(stringToInsert);
+ if (stringToPrefixWith != null) {
+ delegate.appendSql(stringToPrefixWith);
}
delegate.appendSql(sql);
} else {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SetSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SetSqlNode.java?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SetSqlNode.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/SetSqlNode.java
Mon Apr 20 03:49:34 2009
@@ -5,9 +5,7 @@
public class SetSqlNode extends PrefixSqlNode {
public SetSqlNode(SqlNode contents) {
- super(contents, "SET", new ArrayList<String>() {{
- add(",");
- }});
+ super(contents, "SET", ",");
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/WhereSqlNode.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/WhereSqlNode.java?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/WhereSqlNode.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/dynamic/WhereSqlNode.java
Mon Apr 20 03:49:34 2009
@@ -5,10 +5,7 @@
public class WhereSqlNode extends PrefixSqlNode{
public WhereSqlNode(SqlNode contents) {
- super(contents, "WHERE", new ArrayList<String>() {{
- add("AND ");
- add("OR ");
- }});
+ super(contents, "WHERE", "AND |OR ");
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/xml/ibatis-3-mapper.dtd
Mon Apr 20 03:49:34 2009
@@ -128,17 +128,7 @@
type CDATA #REQUIRED
>
-<!ELEMENT include EMPTY>
-<!ATTLIST include
-refid CDATA #REQUIRED
->
-
-<!ELEMENT sql (#PCDATA | include)*>
-<!ATTLIST sql
-id CDATA #REQUIRED
->
-
-<!ELEMENT select (#PCDATA | include)*>
+<!ELEMENT select (#PCDATA | include | prefix | where | set | foreach | choose
| if)*>
<!ATTLIST select
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
@@ -152,7 +142,7 @@
useCache (true|false) #IMPLIED
>
-<!ELEMENT insert (#PCDATA | selectKey | include)*>
+<!ELEMENT insert (#PCDATA | selectKey | include | prefix | where | set |
foreach | choose | if)*>
<!ATTLIST insert
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
@@ -161,14 +151,14 @@
flushCache (true|false) #IMPLIED
>
-<!ELEMENT selectKey (#PCDATA | include)*>
+<!ELEMENT selectKey (#PCDATA | include | prefix | where | set | foreach |
choose | if)*>
<!ATTLIST selectKey
resultType CDATA #IMPLIED
keyProperty CDATA #IMPLIED
order (before|after) #IMPLIED
>
-<!ELEMENT update (#PCDATA | include)*>
+<!ELEMENT update (#PCDATA | include | prefix | where | set | foreach | choose
| if)*>
<!ATTLIST update
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
@@ -177,7 +167,7 @@
flushCache (true|false) #IMPLIED
>
-<!ELEMENT delete (#PCDATA | include)*>
+<!ELEMENT delete (#PCDATA | include | prefix | where | set | foreach | choose
| if)*>
<!ATTLIST delete
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
@@ -185,3 +175,47 @@
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
>
+
+<!-- Dynamic -->
+
+<!ELEMENT include EMPTY>
+<!ATTLIST include
+refid CDATA #REQUIRED
+>
+
+<!ELEMENT sql (#PCDATA | include | prefix | where | set | foreach | choose |
if)*>
+<!ATTLIST sql
+id CDATA #REQUIRED
+>
+
+<!ELEMENT prefix (#PCDATA | include | prefix | where | set | foreach | choose
| if)*>
+<!ATTLIST prefix
+with CDATA #IMPLIED
+overrides CDATA #IMPLIED
+>
+<!ELEMENT where (#PCDATA | include | prefix | where | set | foreach | choose |
if)*>
+<!ELEMENT set (#PCDATA | include | prefix | where | set | foreach | choose |
if)*>
+
+<!ELEMENT foreach (#PCDATA | include | prefix | where | set | foreach | choose
| if)*>
+<!ATTLIST foreach
+collection CDATA #REQUIRED
+item CDATA #IMPLIED
+index CDATA #IMPLIED
+open CDATA #IMPLIED
+close CDATA #IMPLIED
+separator CDATA #IMPLIED
+>
+
+<!ELEMENT choose (when* , otherwise?)>
+<!ELEMENT when (#PCDATA | include | prefix | where | set | foreach | choose |
if)*>
+<!ATTLIST when
+test CDATA #REQUIRED
+>
+<!ELEMENT otherwise (#PCDATA | include | prefix | where | set | foreach |
choose | if)*>
+
+<!ELEMENT if (#PCDATA | include | prefix | where | set | foreach | choose |
if)*>
+<!ATTLIST if
+test CDATA #REQUIRED
+>
+
+
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.xml?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.xml
Mon Apr 20 03:49:34 2009
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">
+ "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/WeakCacheTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/WeakCacheTest.java?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/WeakCacheTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/WeakCacheTest.java
Mon Apr 20 03:49:34 2009
@@ -4,10 +4,11 @@
import org.apache.ibatis.cache.impl.PerpetualCache;
import static org.junit.Assert.*;
import org.junit.Test;
+import org.junit.Ignore;
public class WeakCacheTest {
- @Test
+ @Test @Ignore
public void shouldDemonstrateObjectsBeingCollectedAsNeeded() {
final int N = 300000;
WeakCache cache = new WeakCache(new PerpetualCache("default"));
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/AuthorMapper.xml
Mon Apr 20 03:49:34 2009
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">
+ "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="domain.blog.mappers.AuthorMapper">
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
Mon Apr 20 03:49:34 2009
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">
+ "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="domain.blog.mappers.BlogMapper">
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/CachedAuthorMapper.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/CachedAuthorMapper.xml?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/CachedAuthorMapper.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/CachedAuthorMapper.xml
Mon Apr 20 03:49:34 2009
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">
+ "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.domain.CachedAuthorMapper">
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml?rev=766566&r1=766565&r2=766566&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml
Mon Apr 20 03:49:34 2009
@@ -2,7 +2,7 @@
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
- "http://ibatis.apache.org/dtd/ibatis-config-3.dtd">
+ "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/PostMapper.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/PostMapper.xml?rev=766566&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/PostMapper.xml
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/PostMapper.xml
Mon Apr 20 03:49:34 2009
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE mapper
+ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
+ "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
+
+<mapper namespace="domain.blog.mappers.PostMapper">
+
+ <select id="findPostIn" >
+ </select>
+
+</mapper>
\ No newline at end of file