Skip to content

Commit 50a02db

Browse files
committed
Merge pull request #73 from FrantaM/includes
Configuration variables are not expanded when parsing <include> nodes.
2 parents 17bfc16 + 77153c9 commit 50a02db

File tree

5 files changed

+37
-1
lines changed

5 files changed

+37
-1
lines changed

src/main/java/org/apache/ibatis/builder/xml/XMLIncludeTransformer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.apache.ibatis.builder.IncompleteElementException;
1919
import org.apache.ibatis.builder.MapperBuilderAssistant;
20+
import org.apache.ibatis.parsing.PropertyParser;
2021
import org.apache.ibatis.parsing.XNode;
2122
import org.apache.ibatis.session.Configuration;
2223
import org.w3c.dom.Node;
@@ -53,6 +54,7 @@ public void applyIncludes(Node source) {
5354
}
5455

5556
private Node findSqlFragment(String refid) {
57+
refid = PropertyParser.parse(refid, configuration.getVariables());
5658
refid = builderAssistant.applyCurrentNamespace(refid, true);
5759
try {
5860
XNode nodeToInclude = configuration.getSqlFragments().get(refid);

src/test/java/org/apache/ibatis/submitted/includes/Fragments.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,7 @@
2828
<sql id="update">
2929
update
3030
</sql>
31+
<sql id="values">
32+
VALUES (1);
33+
</sql>
3134
</mapper>

src/test/java/org/apache/ibatis/submitted/includes/IncludeTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.junit.Test;
2323

2424
import java.io.Reader;
25+
import org.apache.ibatis.session.SqlSession;
26+
import org.junit.Assert;
2527

2628
public class IncludeTest {
2729

@@ -32,5 +34,13 @@ public void testIncludes() throws Exception {
3234
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
3335
SqlSessionFactory sqlMapper = builder.build(reader);
3436
assertNotNull(sqlMapper);
37+
38+
final SqlSession sqlSession = sqlMapper.openSession();
39+
try {
40+
final int result = sqlSession.selectOne("org.apache.ibatis.submitted.includes.mapper.selectWithProperty");
41+
Assert.assertEquals(1, result);
42+
} finally {
43+
sqlSession.close();
44+
}
3545
}
3646
}

src/test/java/org/apache/ibatis/submitted/includes/Mapper.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,15 @@
3333
<include refid="sometable"/>
3434
</select>
3535

36+
<select id="selectWithProperty" resultType="_int">
37+
<include refid="${ns}.values"/>
38+
</select>
39+
3640
<update id="update" parameterType="map">
3741
<include refid="org.apache.ibatis.submitted.includes.fragments.update"/>
3842
<include refid="org.apache.ibatis.submitted.includes.mapper.sometable"/>
3943
set Field2 = #{field2,jdbcType=INTEGER},
4044
Field3 = #{field3,jdbcType=VARCHAR},
4145
where field1 = #{field1,jdbcType=INTEGER}
4246
</update>
43-
</mapper>
47+
</mapper>

src/test/java/org/apache/ibatis/submitted/includes/MapperConfig.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,23 @@
2323

2424
<configuration>
2525

26+
<properties>
27+
<property name="ns" value="org.apache.ibatis.submitted.includes.fragments" />
28+
</properties>
29+
30+
<environments default="development">
31+
<environment id="development">
32+
<transactionManager type="JDBC">
33+
<property name="" value="" />
34+
</transactionManager>
35+
<dataSource type="UNPOOLED">
36+
<property name="driver" value="org.hsqldb.jdbcDriver" />
37+
<property name="url" value="jdbc:hsqldb:mem:includes" />
38+
<property name="username" value="sa" />
39+
</dataSource>
40+
</environment>
41+
</environments>
42+
2643
<mappers>
2744
<mapper resource="org/apache/ibatis/submitted/includes/Fragments.xml"/>
2845
<mapper resource="org/apache/ibatis/submitted/includes/Mapper.xml"/>

0 commit comments

Comments
 (0)