use of org.seasar.doma.internal.jdbc.sql.SqlParser in project doma by domaframework.
the class BuildingHelper method getSqlNode.
SqlNode getSqlNode() {
StringBuilder buf = new StringBuilder(200);
for (Item item : items) {
switch(item.kind) {
case SQL:
buf.append(item.sql);
break;
case PARAM:
buf.append("/*");
if (item.param.literal) {
buf.append("^");
}
buf.append(item.param.name);
buf.append("*/0");
break;
default:
assertUnreachable();
break;
}
}
SqlParser parser = new SqlParser(buf.toString());
return parser.parse();
}
use of org.seasar.doma.internal.jdbc.sql.SqlParser in project doma by domaframework.
the class SqlValidatorTest method testFor_identifier.
@Test
void testFor_identifier() throws Exception {
Class<?> target = SqlValidationDao.class;
addCompilationUnit(target);
addProcessor(new TestProcessor() {
@Override
protected void run() {
ExecutableElement methodElement = createMethodElement(target, "testFor", List.class);
LinkedHashMap<String, TypeMirror> parameterTypeMap = createParameterTypeMap(methodElement);
SqlValidator validator = new SqlValidator(ctx, methodElement, parameterTypeMap, "aaa/bbbDao/ccc.sql", false, false);
SqlParser parser = new SqlParser("select * from emp where name = /*%for e : names*/ /*x*/'aaa' /*%if e_has_next*/or/*%end*//*%end*/");
SqlNode sqlNode = parser.parse();
try {
sqlNode.accept(validator, null);
fail();
} catch (AptException expected) {
System.out.println(expected.getMessage());
assertEquals(Message.DOMA4092, expected.getMessageResource());
}
}
});
compile();
assertTrue(getCompiledResult());
}
use of org.seasar.doma.internal.jdbc.sql.SqlParser in project doma by domaframework.
the class SqlValidatorTest method testFor_noTypeArgument.
@Test
void testFor_noTypeArgument() throws Exception {
Class<?> target = SqlValidationDao.class;
addCompilationUnit(target);
addProcessor(new TestProcessor() {
@Override
protected void run() {
ExecutableElement methodElement = createMethodElement(target, "testFor_noTypeArgument", List.class);
LinkedHashMap<String, TypeMirror> parameterTypeMap = createParameterTypeMap(methodElement);
SqlValidator validator = new SqlValidator(ctx, methodElement, parameterTypeMap, "aaa/bbbDao/ccc.sql", false, false);
SqlParser parser = new SqlParser("select * from emp where name = /*%for e : names*/ /*e*/'aaa' /*%if e_has_next*/or/*%end*//*%end*/");
SqlNode sqlNode = parser.parse();
try {
sqlNode.accept(validator, null);
fail();
} catch (AptException expected) {
System.out.println(expected.getMessage());
assertEquals(Message.DOMA4150, expected.getMessageResource());
}
}
});
compile();
assertTrue(getCompiledResult());
}
use of org.seasar.doma.internal.jdbc.sql.SqlParser in project doma by domaframework.
the class SqlValidatorTest method testBindVariable_list.
@Test
void testBindVariable_list() throws Exception {
Class<?> target = SqlValidationDao.class;
addCompilationUnit(target);
addProcessor(new TestProcessor() {
@Override
protected void run() {
ExecutableElement methodElement = createMethodElement(target, "testBindVariable_list", List.class);
LinkedHashMap<String, TypeMirror> parameterTypeMap = createParameterTypeMap(methodElement);
SqlValidator validator = new SqlValidator(ctx, methodElement, parameterTypeMap, "aaa/bbbDao/ccc.sql", false, false);
SqlParser parser = new SqlParser("select * from emp where name in /* names */('aaa')");
SqlNode sqlNode = parser.parse();
sqlNode.accept(validator, null);
}
});
compile();
assertTrue(getCompiledResult());
}
use of org.seasar.doma.internal.jdbc.sql.SqlParser in project doma by domaframework.
the class SqlValidatorTest method testFormalTypeParameterResolution.
@Test
void testFormalTypeParameterResolution() throws Exception {
Class<?> target = SqlValidationDao.class;
addCompilationUnit(target);
addProcessor(new TestProcessor() {
@Override
protected void run() {
ExecutableElement methodElement = createMethodElement(target, "testTypeParameterResolution", CriteriaHolder.class);
LinkedHashMap<String, TypeMirror> parameterTypeMap = createParameterTypeMap(methodElement);
SqlValidator validator = new SqlValidator(ctx, methodElement, parameterTypeMap, "aaa/bbbDao/ccc.sql", false, false);
SqlParser parser = new SqlParser("select * from emp where name in /* criteriaHolder.criteria.list */(0)");
SqlNode sqlNode = parser.parse();
sqlNode.accept(validator, null);
}
});
compile();
assertTrue(getCompiledResult());
}
Aggregations