Skip to content

Commit

Permalink
Merge pull request #102 from domaframework/issue-101
Browse files Browse the repository at this point in the history
UnknownColumnHandler の handle() を空実装にすると NullPointerException が発生する問題を修正
  • Loading branch information
nakamura-to committed Oct 18, 2015
2 parents d41c22a + 1632dc6 commit 5466104
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,10 @@ protected ENTITY build(ResultSet resultSet) throws SQLException {
}
unknownColumnHandler.handle(query, entityType,
lowerCaseColumnName);
} else {
unmappedPropertySet.remove(propertyType);
indexMap.put(i, propertyType);
}
unmappedPropertySet.remove(propertyType);
indexMap.put(i, propertyType);
}
if (resultMappingEnsured && !unmappedPropertySet.isEmpty()) {
throwResultMappingException(unmappedPropertySet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.Collections;

import junit.framework.TestCase;

Expand All @@ -29,7 +30,12 @@
import org.seasar.doma.internal.jdbc.sql.PreparedSql;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.SelectOptions;
import org.seasar.doma.jdbc.SqlKind;
import org.seasar.doma.jdbc.SqlLogType;
import org.seasar.doma.jdbc.UnknownColumnException;
import org.seasar.doma.jdbc.UnknownColumnHandler;
import org.seasar.doma.jdbc.entity.EntityType;
import org.seasar.doma.jdbc.query.Query;
import org.seasar.doma.jdbc.query.SelectQuery;

import example.entity.Emp;
Expand All @@ -41,8 +47,6 @@
*/
public class EntityProviderTest extends TestCase {

private final MockConfig runtimeConfig = new MockConfig();

public void testGetEntity() throws Exception {
MockResultSetMetaData metaData = new MockResultSetMetaData();
metaData.columns.add(new ColumnMetaData("id"));
Expand All @@ -55,7 +59,52 @@ public void testGetEntity() throws Exception {

_Emp entityType = _Emp.getSingletonInternal();
EntityProvider<Emp> provider = new EntityProvider<>(entityType,
new MySelectQuery(), false);
new MySelectQuery(new MockConfig()), false);
Emp emp = provider.get(resultSet);

assertEquals(new Integer(1), emp.getId());
assertEquals("aaa", emp.getName());
assertEquals(new BigDecimal(10), emp.getSalary());
assertEquals(new Integer(100), emp.getVersion());
}

public void testGetEntity_UnknownColumnException() throws Exception {
MockResultSetMetaData metaData = new MockResultSetMetaData();
metaData.columns.add(new ColumnMetaData("id"));
metaData.columns.add(new ColumnMetaData("name"));
metaData.columns.add(new ColumnMetaData("salary"));
metaData.columns.add(new ColumnMetaData("version"));
metaData.columns.add(new ColumnMetaData("unknown"));
MockResultSet resultSet = new MockResultSet(metaData);
resultSet.rows
.add(new RowData(1, "aaa", new BigDecimal(10), 100, "bbb"));
resultSet.next();

_Emp entityType = _Emp.getSingletonInternal();
EntityProvider<Emp> provider = new EntityProvider<>(entityType,
new MySelectQuery(new MockConfig()), false);
try {
provider.get(resultSet);
fail();
} catch (UnknownColumnException expected) {
}
}

public void testGetEntity_EmptyUnknownColumnHandler() throws Exception {
MockResultSetMetaData metaData = new MockResultSetMetaData();
metaData.columns.add(new ColumnMetaData("id"));
metaData.columns.add(new ColumnMetaData("name"));
metaData.columns.add(new ColumnMetaData("salary"));
metaData.columns.add(new ColumnMetaData("version"));
metaData.columns.add(new ColumnMetaData("unknown"));
MockResultSet resultSet = new MockResultSet(metaData);
resultSet.rows
.add(new RowData(1, "aaa", new BigDecimal(10), 100, "bbb"));
resultSet.next();

_Emp entityType = _Emp.getSingletonInternal();
EntityProvider<Emp> provider = new EntityProvider<>(entityType,
new MySelectQuery(new EmptyUnknownColumnHandlerConfig()), false);
Emp emp = provider.get(resultSet);

assertEquals(new Integer(1), emp.getId());
Expand All @@ -66,14 +115,20 @@ public void testGetEntity() throws Exception {

protected class MySelectQuery implements SelectQuery {

private final Config config;

MySelectQuery(Config config) {
this.config = config;
}

@Override
public SelectOptions getOptions() {
return SelectOptions.get();
}

@Override
public Config getConfig() {
return runtimeConfig;
return config;
}

@Override
Expand All @@ -88,7 +143,8 @@ public String getMethodName() {

@Override
public PreparedSql getSql() {
return null;
return new PreparedSql(SqlKind.SELECT, "dummy", "dummy", "dummy",
Collections.emptyList(), SqlLogType.FORMATTED);
}

@Override
Expand Down Expand Up @@ -146,4 +202,20 @@ public String comment(String sql) {
}

}

protected static class EmptyUnknownColumnHandler implements
UnknownColumnHandler {
@Override
public void handle(Query query, EntityType<?> entityType,
String unknownColumnName) {
}
}

protected static class EmptyUnknownColumnHandlerConfig extends MockConfig {
@Override
public UnknownColumnHandler getUnknownColumnHandler() {
return new EmptyUnknownColumnHandler();
}

}
}

0 comments on commit 5466104

Please sign in to comment.