public static void _onDebug(PageContext pc) throws PageException { try { if (pc.getConfig().debug()) pc.getDebugger().writeOut(pc); } catch (IOException e) { throw Caster.toPageException(e); } }
private static synchronized lucee.runtime.type.Struct _call(PageContext pc, int dialect) throws PageException { Struct sct = new StructImpl(); // synchronized(sct) { // hasSet=true; TagLib[] tlds; TagLibTag tag; tlds = ((ConfigImpl) pc.getConfig()).getTLDs(dialect); for (int i = 0; i < tlds.length; i++) { String ns = tlds[i].getNameSpaceAndSeparator(); Map<String, TagLibTag> tags = tlds[i].getTags(); Iterator<String> it = tags.keySet().iterator(); Struct inner = new StructImpl(); sct.set(ns, inner); while (it.hasNext()) { Object n = it.next(); tag = tlds[i].getTag(n.toString()); if (tag.getStatus() != TagLib.STATUS_HIDDEN && tag.getStatus() != TagLib.STATUS_UNIMPLEMENTED) inner.set(n.toString(), ""); } } // } // } return sct; }
public static Page loadPage(PageContext pc, PageSource ps, boolean forceReload) throws PageException { if (pc.getConfig().debug()) { DebugEntryTemplate debugEntry = pc.getDebugger().getEntry(pc, ps); pc.addPageSource(ps, true); int currTime = pc.getExecutionTime(); long exeTime = 0; long time = System.currentTimeMillis(); try { debugEntry.updateFileLoadTime((int) (System.currentTimeMillis() - time)); exeTime = System.currentTimeMillis(); return ps.loadPage(pc, forceReload); } finally { int diff = ((int) (System.currentTimeMillis() - exeTime) - (pc.getExecutionTime() - currTime)); pc.setExecutionTime(pc.getExecutionTime() + (int) (System.currentTimeMillis() - time)); debugEntry.updateExeTime(diff); pc.removeLastPageSource(true); } } // no debug pc.addPageSource(ps, true); try { return ps.loadPage(pc, forceReload); } finally { pc.removeLastPageSource(true); } }
public static InterfaceImpl loadInterface( PageContext pc, Page page, PageSource ps, String callPath, boolean isRealPath) throws PageException { InterfaceImpl rtn = null; if (pc.getConfig().debug()) { DebugEntryTemplate debugEntry = pc.getDebugger().getEntry(pc, ps); pc.addPageSource(ps, true); int currTime = pc.getExecutionTime(); long exeTime = 0; long time = System.nanoTime(); try { debugEntry.updateFileLoadTime((int) (System.nanoTime() - time)); exeTime = System.nanoTime(); if (page == null) page = ps.loadPage(pc, false); rtn = initInterface(pc, page, callPath, isRealPath); } finally { int diff = ((int) (System.nanoTime() - exeTime) - (pc.getExecutionTime() - currTime)); pc.setExecutionTime(pc.getExecutionTime() + (int) (System.nanoTime() - time)); debugEntry.updateExeTime(diff); pc.removeLastPageSource(true); } } // no debug else { pc.addPageSource(ps, true); try { if (page == null) page = ps.loadPage(pc, false); rtn = initInterface(pc, page, callPath, isRealPath); } finally { pc.removeLastPageSource(true); } } return rtn; }
private void _release(PageContext pc, long exe) { ActiveLock al = ((PageContextImpl) pc).releaseActiveLock(); // listener ((ConfigWebImpl) pc.getConfig()) .getActionMonitorCollector() .log(pageContext, "lock", "Lock", exe, al.name + ":" + al.timeoutInMillis); }
public static String call(PageContext pc, String strType) throws PageException { int type = Util.toType(strType, Config.CACHE_TYPE_NONE); if (type == Config.CACHE_TYPE_NONE) throw new FunctionException( pc, "CacheGetDefaultCacheName", 1, "type", "invalid type defintion [" + strType + "], valid types are [object,resource,template,query]"); ConfigImpl config = (ConfigImpl) pc.getConfig(); CacheConnection conn = config.getCacheDefaultConnection(type); if (conn == null) throw new ExpressionException("there is no default cache defined for type [" + strType + "]"); return conn.getName(); }
public BIF(PageContext pc, String name) throws ApplicationException { super(Component.ACCESS_PUBLIC); ci = (ConfigImpl) pc.getConfig(); FunctionLib fl = ci.getCombinedFLDs(pc.getCurrentTemplateDialect()); flf = fl.getFunction(name); // BIF not found if (flf == null) { Key[] keys = CollectionUtil.toKeys(fl.getFunctions().keySet()); throw new ApplicationException( ExceptionUtil.similarKeyMessage( keys, name, "build in function", "build in functions", null, false)); } try { this.id = Hash.md5(name); } catch (NoSuchAlgorithmException e) { this.id = name; } }
private static ComponentImpl _loadComponent( PageContext pc, CIPage page, String callPath, boolean isRealPath, boolean isExtendedComponent, boolean executeConstr) throws PageException { ComponentImpl rtn = null; if (pc.getConfig().debug()) { DebugEntryTemplate debugEntry = pc.getDebugger().getEntry(pc, page.getPageSource()); pc.addPageSource(page.getPageSource(), true); int currTime = pc.getExecutionTime(); long exeTime = 0; long time = System.nanoTime(); try { debugEntry.updateFileLoadTime((int) (System.nanoTime() - time)); exeTime = System.nanoTime(); rtn = initComponent(pc, page, callPath, isRealPath, isExtendedComponent, executeConstr); } finally { if (rtn != null) rtn.setLoaded(true); int diff = ((int) (System.nanoTime() - exeTime) - (pc.getExecutionTime() - currTime)); pc.setExecutionTime(pc.getExecutionTime() + (int) (System.nanoTime() - time)); debugEntry.updateExeTime(diff); pc.removeLastPageSource(true); } } // no debug else { pc.addPageSource(page.getPageSource(), true); try { rtn = initComponent(pc, page, callPath, isRealPath, isExtendedComponent, executeConstr); } finally { if (rtn != null) rtn.setLoaded(true); pc.removeLastPageSource(true); } } return rtn; }
public static Struct call(PageContext pc, String scheme) { ResourceProvider[] providers = pc.getConfig().getResourceProviders(); ResourceProvider provider; scheme = scheme.trim(); Struct sct = new StructImpl(); for (int i = 0; i < providers.length; i++) { provider = providers[i]; if (provider.getScheme().equalsIgnoreCase(scheme)) { // MUST sct=provider.getMetaData(); sct.setEL("Scheme", provider.getScheme()); sct.setEL("Attributes", provider.isAttributesSupported()); sct.setEL("CaseSensitive", provider.isCaseSensitive()); sct.setEL("Mode", provider.isModeSupported()); sct.setEL("Enabled", Boolean.TRUE); return sct; } } sct.setEL("Enabled", Boolean.FALSE); return sct; }
private static Object _search( PageContext pc, PageSource loadingLocation, String rawPath, Boolean searchLocal, Boolean searchRoot, boolean executeConstr, short returnType, Page currP, int dialect, boolean isExtendedComponent) throws PageException { ConfigImpl config = (ConfigImpl) pc.getConfig(); boolean doCache = config.useComponentPathCache(); String sub = null; if (returnType != RETURN_TYPE_PAGE && rawPath.indexOf(':') != -1) { int d = rawPath.indexOf(':'); int s = rawPath.indexOf('.'); if (d > s) { sub = rawPath.substring(d + 1); rawPath = rawPath.substring(0, d); } } // app-String appName=pc.getApplicationContext().getName(); rawPath = rawPath.trim().replace('\\', '/'); String path = (rawPath.indexOf("./") == -1) ? rawPath.replace('.', '/') : rawPath; boolean isRealPath = !StringUtil.startsWith(path, '/'); // PageSource currPS = pc.getCurrentPageSource(); // Page currP=currPS.loadPage(pc,false); PageSource ps = null; CIPage page = null; // MUSTMUST improve to handle different extensions String pathWithCFC = path.concat( "." + (dialect == CFMLEngine.DIALECT_CFML ? Constants.getCFMLComponentExtension() : Constants.getLuceeComponentExtension())); // no cache for per application pathes Mapping[] acm = pc.getApplicationContext().getComponentMappings(); if (!ArrayUtil.isEmpty(acm)) { Mapping m; for (int y = 0; y < acm.length; y++) { m = acm[y]; ps = m.getPageSource(pathWithCFC); page = toCIPage(ps.loadPageThrowTemplateException(pc, false, (Page) null)); if (page != null) { return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } } if (searchLocal == null) searchLocal = Caster.toBoolean(rawPath.indexOf('.') == -1 ? true : config.getComponentLocalSearch()); if (searchRoot == null) searchRoot = Caster.toBoolean(config.getComponentRootSearch()); // CACHE // check local in cache String localCacheName = null; if (searchLocal && isRealPath) { localCacheName = currP.getPageSource().getDisplayPath().replace('\\', '/'); localCacheName = localCacheName.substring(0, localCacheName.lastIndexOf('/') + 1).concat(pathWithCFC); if (doCache) { page = config.getCachedPage(pc, localCacheName); if (page != null) return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } // check import cache if (doCache && isRealPath) { ImportDefintion impDef = config.getComponentDefaultImport(); ImportDefintion[] impDefs = currP == null ? new ImportDefintion[0] : currP.getImportDefintions(); int i = -1; do { if (impDef.isWildcard() || impDef.getName().equalsIgnoreCase(path)) { page = config.getCachedPage(pc, "import:" + impDef.getPackageAsPath() + pathWithCFC); if (page != null) return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } impDef = ++i < impDefs.length ? impDefs[i] : null; } while (impDef != null); } if (doCache) { // check global in cache page = config.getCachedPage(pc, pathWithCFC); if (page != null) return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } // SEARCH // search from local if (searchLocal && isRealPath) { // check realpath PageSource[] arr = ((PageContextImpl) pc).getRelativePageSources(pathWithCFC); page = toCIPage(PageSourceImpl.loadPage(pc, arr, null)); if (page != null) { if (doCache) config.putCachedPageSource(localCacheName, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } // search with imports Mapping[] cMappings = config.getComponentMappings(); if (isRealPath) { ImportDefintion impDef = config.getComponentDefaultImport(); ImportDefintion[] impDefs = currP == null ? new ImportDefintion[0] : currP.getImportDefintions(); PageSource[] arr; int i = -1; do { if (impDef.isWildcard() || impDef.getName().equalsIgnoreCase(path)) { // search from local first if (searchLocal) { arr = ((PageContextImpl) pc) .getRelativePageSources(impDef.getPackageAsPath() + pathWithCFC); page = toCIPage(PageSourceImpl.loadPage(pc, arr, null)); if (page != null) { if (doCache) config.putCachedPageSource( "import:" + impDef.getPackageAsPath() + pathWithCFC, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } // search mappings and webroot page = toCIPage( PageSourceImpl.loadPage( pc, ((PageContextImpl) pc) .getPageSources("/" + impDef.getPackageAsPath() + pathWithCFC), null)); if (page != null) { String key = impDef.getPackageAsPath() + pathWithCFC; if (doCache && !((MappingImpl) page.getPageSource().getMapping()).isAppMapping()) config.putCachedPageSource("import:" + key, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } // search component mappings Mapping m; for (int y = 0; y < cMappings.length; y++) { m = cMappings[y]; ps = m.getPageSource(impDef.getPackageAsPath() + pathWithCFC); page = toCIPage(ps.loadPageThrowTemplateException(pc, false, (Page) null)); if (page != null) { if (doCache) config.putCachedPageSource( "import:" + impDef.getPackageAsPath() + pathWithCFC, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } } impDef = ++i < impDefs.length ? impDefs[i] : null; } while (impDef != null); } String p; if (isRealPath) p = '/' + pathWithCFC; else p = pathWithCFC; // search mappings and webroot page = toCIPage(PageSourceImpl.loadPage(pc, ((PageContextImpl) pc).getPageSources(p), null)); if (page != null) { String key = pathWithCFC; if (doCache && !((MappingImpl) page.getPageSource().getMapping()).isAppMapping()) config.putCachedPageSource(key, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } // search component mappings Mapping m; for (int i = 0; i < cMappings.length; i++) { m = cMappings[i]; ps = m.getPageSource(p); page = toCIPage(ps.loadPageThrowTemplateException(pc, false, (Page) null)); // recursive search if (page == null && config.doComponentDeepSearch() && path.indexOf('/') == -1) { ps = MappingUtil.searchMappingRecursive(m, pathWithCFC, true); if (ps != null) { page = toCIPage(ps.loadPageThrowTemplateException(pc, false, (Page) null)); if (page != null) doCache = false; // do not cache this, it could be ambigous } } if (page != null) { if (doCache) config.putCachedPageSource(pathWithCFC, page.getPageSource()); return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } // search relative to active component (this get not cached because the cache get ambigous if we // do) if (searchLocal && isRealPath) { if (loadingLocation == null) { Component c = pc.getActiveComponent(); if (c != null) loadingLocation = c.getPageSource(); } if (loadingLocation != null) { ps = loadingLocation.getRealPage(pathWithCFC); if (ps != null) { page = toCIPage(ps.loadPageThrowTemplateException(pc, false, (Page) null)); if (page != null) { return returnType == RETURN_TYPE_PAGE ? page : load( pc, page, trim(path.replace('/', '.')), sub, isRealPath, returnType, isExtendedComponent, executeConstr); } } } } // translate cfide. to org.lucee.cfml if (StringUtil.startsWithIgnoreCase(rawPath, "cfide.")) { String rpm = Constants.DEFAULT_PACKAGE + "." + rawPath.substring(6); try { return _search( pc, loadingLocation, rpm, searchLocal, searchRoot, executeConstr, returnType, currP, dialect, false); } catch (ExpressionException ee) { return null; // throw new ExpressionException("invalid "+toStringType(returnType)+" definition, can't // find "+rawPath+" or "+rpm); } } return null; // throw new ExpressionException("invalid "+toStringType(returnType)+" definition, can't find // "+toStringType(returnType)+" ["+rawPath+"]"); }
@Override public Struct getCatchBlock(PageContext pc) { return getCatchBlock(pc.getConfig()); }