package railo.runtime.orm.naming; import railo.runtime.Component; import railo.runtime.engine.ThreadLocalPageContext; import railo.runtime.exp.PageException; import railo.runtime.exp.PageRuntimeException; import railo.runtime.op.Caster; import railo.runtime.type.UDF; public class CFCNamingStrategy implements NamingStrategy { Component cfc; public CFCNamingStrategy(String cfcName) throws PageException{ this.cfc=ThreadLocalPageContext.get().loadComponent(cfcName); } public Component getComponent() { return cfc; } @Override public String convertTableName(String tableName) { return call("getTableName",tableName); } @Override public String convertColumnName(String columnName) { return call("getColumnName",columnName); } private String call(String functionName, String name) { Object res = cfc.get(functionName,null); if(!(res instanceof UDF)) return name; try { return Caster.toString(cfc.call(ThreadLocalPageContext.get(), functionName, new Object[]{name})); } catch (PageException pe) { throw new PageRuntimeException(pe); } } @Override public String getType() { return "cfc"; } }