001    package railo.runtime.functions.other;
002    
003    import java.util.Map;
004    
005    import railo.commons.lang.StringUtil;
006    import railo.runtime.PageContext;
007    import railo.runtime.db.DataSource;
008    import railo.runtime.db.DataSourceImpl;
009    
010    
011    public class DatasourceFlushMetaCache {
012    
013        public synchronized static boolean call(PageContext pc) {
014            return call(pc, null);
015            }
016    
017        public synchronized static boolean call(PageContext pc,String datasource) {
018            
019            DataSource[] sources = pc.getConfig().getDataSources();
020            DataSourceImpl ds;
021            boolean has=false;
022            for(int i=0;i<sources.length;i++){
023                    ds=(DataSourceImpl) sources[i];
024                    if(StringUtil.isEmpty(datasource) || ds.getName().equalsIgnoreCase(datasource.trim())){
025                            Map cache=ds.getProcedureColumnCache();
026                            if(cache!=null) cache.clear();
027                            if(!StringUtil.isEmpty(datasource))return true;
028                            has=true;
029                    }
030            }
031            return has;
032            }
033    
034    }