From 63c8a0f791f241505701e8498b9d25c59a6f9f20 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Wed, 27 Jun 2012 13:44:50 +0200 Subject: [PATCH] Support MyBatis ResultHandler for dependencies and resources --- .../core/dependency/DependencyMapper.java | 4 +++ .../sonar/core/resource/ResourceMapper.java | 7 ++++ .../core/dependency/DependencyMapperTest.java | 32 ++++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/sonar-core/src/main/java/org/sonar/core/dependency/DependencyMapper.java b/sonar-core/src/main/java/org/sonar/core/dependency/DependencyMapper.java index cea1d23f7c7..e2f2d450ad9 100644 --- a/sonar-core/src/main/java/org/sonar/core/dependency/DependencyMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/dependency/DependencyMapper.java @@ -19,8 +19,12 @@ */ package org.sonar.core.dependency; +import org.apache.ibatis.session.ResultHandler; + import java.util.List; public interface DependencyMapper { List selectAll(); + + void selectAll(ResultHandler handler); } diff --git a/sonar-core/src/main/java/org/sonar/core/resource/ResourceMapper.java b/sonar-core/src/main/java/org/sonar/core/resource/ResourceMapper.java index aa26bf9d00b..bd54734db46 100644 --- a/sonar-core/src/main/java/org/sonar/core/resource/ResourceMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/resource/ResourceMapper.java @@ -19,6 +19,8 @@ */ package org.sonar.core.resource; +import org.apache.ibatis.session.ResultHandler; + import java.util.List; public interface ResourceMapper { @@ -37,4 +39,9 @@ public interface ResourceMapper { * @since 3.0 */ List selectResourceIds(ResourceQuery query); + + /** + * @since 3.2 + */ + void selectResources(ResourceQuery query, ResultHandler resultHandler); } diff --git a/sonar-core/src/test/java/org/sonar/core/dependency/DependencyMapperTest.java b/sonar-core/src/test/java/org/sonar/core/dependency/DependencyMapperTest.java index 4dd1307dcb9..45f408e7824 100644 --- a/sonar-core/src/test/java/org/sonar/core/dependency/DependencyMapperTest.java +++ b/sonar-core/src/test/java/org/sonar/core/dependency/DependencyMapperTest.java @@ -19,6 +19,9 @@ */ package org.sonar.core.dependency; +import com.google.common.collect.Lists; +import org.apache.ibatis.session.ResultContext; +import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import org.sonar.core.persistence.DaoTestCase; @@ -51,5 +54,32 @@ public class DependencyMapperTest extends DaoTestCase { MyBatis.closeQuietly(session); } } -} + @Test + public void should_use_result_handler() { + setupData("fixture"); + + final List dependencies = Lists.newArrayList(); + + SqlSession session = getMyBatis().openSession(); + try { + session.getMapper(DependencyMapper.class).selectAll(new ResultHandler() { + public void handleResult(ResultContext context) { + dependencies.add((DependencyDto) context.getResultObject()); + } + }); + } finally { + MyBatis.closeQuietly(session); + } + + assertThat(dependencies).hasSize(2); + + DependencyDto dep = dependencies.get(0); + assertThat(dep.getUsage()).isEqualTo("compile"); + assertThat(dep.getFromResourceId()).isEqualTo(100L); + assertThat(dep.getFromVersion()).isEqualTo("1.0"); + assertThat(dep.getToResourceId()).isEqualTo(101L); + assertThat(dep.getToVersion()).isEqualTo("3.0"); + assertThat(dep.getId()).isEqualTo(1L); + } +} -- 2.39.5