@Override public StatementName getStatementName(final StatementContext statementContext) { final String rawSql = statementContext.getRawSql(); if (ClasspathStatementLocator.looksLikeSql(rawSql)) { return forRawSql(rawSql); } return null; } }
protected StatementLocator getStatementLocator() { return new ClasspathStatementLocator(); }
/** * Very basic sanity test to see if a string looks like it might be sql */ public static boolean looksLikeSql(String sql) { final String local = left(stripStart(sql), 7).toLowerCase(); return local.startsWith("insert ") || local.startsWith("update ") || local.startsWith("select ") || local.startsWith("call ") || local.startsWith("delete ") || local.startsWith("create ") || local.startsWith("alter ") || local.startsWith("drop "); }
cache_key = '/' + mungify(ctx.getSqlObjectType().getName() + '.' + name) + ".sql"; if (looksLikeSql(name)) { final ClassLoader loader = selectClassLoader(); BufferedReader reader = null; try { String filename = '/' + mungify(ctx.getSqlObjectType().getName() + '.' + name) + ".sql"; in_stream = loader.getResourceAsStream(filename); if (in_stream == null) { try { while ((line = reader.readLine()) != null) { if (isComment(line)) {
cache_key = '/' + mungify(ctx.getSqlObjectType().getName() + '.' + name) + ".sql"; if (looksLikeSql(name)) { found.putIfAbsent(cache_key, name); return name; final ClassLoader loader = selectClassLoader(); BufferedReader reader = null; try { String filename = '/' + mungify(ctx.getSqlObjectType().getName() + '.' + name) + ".sql"; in_stream = loader.getResourceAsStream(filename); if (in_stream == null) { try { while ((line = reader.readLine()) != null) { if (isComment(line)) {
@Override public MetricName getStatementName(StatementContext statementContext) { final String rawSql = statementContext.getRawSql(); if (ClasspathStatementLocator.looksLikeSql(rawSql)) { return forRawSql(rawSql); } return null; } }
/** * Very basic sanity test to see if a string looks like it might be sql */ public static boolean looksLikeSql(String sql) { final String local = left(stripStart(sql), 8).toLowerCase(); return local.startsWith("insert ") || local.startsWith("update ") || local.startsWith("select ") || local.startsWith("call ") || local.startsWith("delete ") || local.startsWith("create ") || local.startsWith("alter ") || local.startsWith("merge ") || local.startsWith("replace ") || local.startsWith("drop "); }
protected StatementLocator getStatementLocator() { return new ClasspathStatementLocator(); }
public String locate(String name, StatementContext ctx) throws Exception { if (ClasspathStatementLocator.looksLikeSql(name)) { return name; } final StringTokenizer tok = new StringTokenizer(name, ":"); final String group_name = tok.nextToken(); final String template_name = tok.nextToken(); final StringTemplateGroup group = loader.loadGroup(group_name); final StringTemplate template = group.getInstanceOf(template_name); template.setAttributes(ctx.getAttributes()); return template.toString(); } });
@Test public void testCachesOriginalQueryWhenNotFound() throws Exception { StatementLocator statementLocator = new ClasspathStatementLocator(); StatementContext statementContext = new TestingStatementContext(new HashMap<String, Object>()) { @Override public Class<?> getSqlObjectType() { return TestClasspathStatementLocator.class; } }; String input = "missing query"; String located = statementLocator.locate(input, statementContext); assertEquals(input, located); // first time just caches it located = statementLocator.locate(input, statementContext); assertEquals(input, located); // second time reads from cache } }
@Test public void testCachesOriginalQueryWhenNotFound() throws Exception { StatementLocator statementLocator = new ClasspathStatementLocator(); StatementContext statementContext = new TestingStatementContext(new HashMap<String, Object>()) { @Override public Class<?> getSqlObjectType() { return TestClasspathStatementLocator.class; } @Override public Method getSqlObjectMethod() { return null; } }; String input = "missing query"; String located = statementLocator.locate(input, statementContext); assertEquals(input, located); // first time just caches it located = statementLocator.locate(input, statementContext); assertEquals(input, located); // second time reads from cache }
@Test public void testCachesOriginalQueryByMethodWhenNotFound() throws Exception { StatementLocator statementLocator = new ClasspathStatementLocator(); StatementContext statementContext = new TestingStatementContext(new HashMap<String, Object>()) { @Override public Class<?> getSqlObjectType() { return TestClasspathStatementLocator.class; } @Override public Method getSqlObjectMethod() { try { return TestClasspathStatementLocator.class.getMethod("testCachesOriginalQueryByMethodWhenNotFound"); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } }; String input = "missing query"; String located = statementLocator.locate(input, statementContext); assertEquals(input, located); // first time just caches it located = statementLocator.locate(input, statementContext); assertEquals(input, located); // second time reads from cache }
new ClasspathStatementLocator(), builder, new ColonPrefixNamedParamStatementRewriter(),
new ClasspathStatementLocator(), builder, new ColonPrefixNamedParamStatementRewriter(),