private Component getCFC( PageContext pc, String requestURI, String cfcPath, String id, boolean peristent) throws PageException { Component cfc; if (peristent) { cfc = (Component) cfcs.get(requestURI + id); if (cfc != null) return cfc; } ConfigImpl config = (ConfigImpl) pc.getConfig(); Mapping m = new MappingImpl( (ConfigImpl) pc.getConfig(), "/", getCFCDirectory().getAbsolutePath(), null, false, true, false, false, false); PageSource ps = m.getPageSource(requestURI); Page p = ((PageSourceImpl) ps).loadPage(pc, (ConfigWeb) config); cfc = ComponentLoader.loadComponentImpl(pc, p, ps, cfcPath, false, true); if (peristent) cfcs.put(requestURI + id, cfc); return cfc; }
public static DatabaseException notFoundException(PageContext pc, String datasource) { List<String> list = new ArrayList<String>(); // application based datasources DataSource[] datasources = ((ApplicationContextPro) pc.getApplicationContext()).getDataSources(); if (datasources != null) for (int i = 0; i < datasources.length; i++) { list.add(datasources[i].getName()); } // config based datasources datasources = pc.getConfig().getDataSources(); if (datasources != null) for (int i = 0; i < datasources.length; i++) { list.add(datasources[i].getName()); } // create error detail DatabaseException de = new DatabaseException("datasource [" + datasource + "] doesn't exist", null, null, null); de.setDetail( ExceptionUtil.createSoundexDetail(datasource, list.iterator(), "datasource names")); de.setAdditional(KeyConstants._Datasource, datasource); return de; }
protected Object interpretPart(PageContext pc, ParserString cfml) throws PageException { this.cfml = cfml; this.pc = pc; if (pc != null) fld = ((ConfigImpl) pc.getConfig()).getCombinedFLDs(); cfml.removeSpace(); return assignOp().getValue(); }
/** @see railo.runtime.orm.ORMEngine#getSession(railo.runtime.PageContext) */ public ORMSession createSession(PageContext pc) throws PageException { ApplicationContextPro appContext = ((ApplicationContextPro) pc.getApplicationContext()); String dsn = appContext.getORMDatasource(); // DatasourceManager manager = pc.getDataSourceManager(); // DatasourceConnection dc=manager.getConnection(pc,dsn, null, null); DatasourceConnection dc = ((ConfigWebImpl) pc.getConfig()) .getDatasourceConnectionPool() .getDatasourceConnection(pc, pc.getConfig().getDataSource(dsn), null, null); try { return new HibernateORMSession(this, getSessionFactory(pc), dc); } catch (PageException pe) { // manager.releaseConnection(pc, dc);// connection is closed when session ends throw pe; } }
public static InitFile createInitFile(PageContext pageContext, boolean isweb, String filename) { ConfigWebImpl config = (ConfigWebImpl) pageContext.getConfig(); Mapping mapping = isweb ? config.getTagMapping() : config.getServerTagMapping(); return new InitFile( mapping.getPageSource(filename), filename, filename.endsWith('.' + config.getCFCExtension())); }
public static synchronized UDF loadUDF( PageContext pc, String filename, Collection.Key name, boolean isweb) throws PageException { ConfigWebImpl config = (ConfigWebImpl) pc.getConfig(); String key = isweb ? name.getString() + config.getId() : name.getString(); UDF udf = config.getFromFunctionCache(key); if (udf != null) return udf; Mapping mapping = isweb ? config.getFunctionMapping() : config.getServerFunctionMapping(); PageSourceImpl ps = (PageSourceImpl) mapping.getPageSource(filename); Page p = ps.loadPage(pc, pc.getConfig()); // execute page Variables old = pc.variablesScope(); pc.setVariablesScope(VAR); boolean wasSilent = pc.setSilent(); try { p.call(pc); Object o = pc.variablesScope().get(name, null); if (o instanceof UDF) { udf = (UDF) o; config.putToFunctionCache(key, udf); return udf; } throw new ExpressionException( "there is no Function defined with name [" + name + "] in template [" + mapping.getStrPhysical() + File.separator + filename + "]"); } catch (Throwable t) { throw Caster.toPageException(t); } finally { pc.setVariablesScope(old); if (!wasSilent) pc.unsetSilent(); } }
/** * Wird aufgerufen um aus dem bergebenen CFMLString einen Ausdruck auszulesen und diese zu * interpretieren. <br> * Beispiel eines bergebenen String:<br> * <code>session.firstName</code> oder <code>trim(left('test'&var1,3))</code> <br> * EBNF:<br> * <code>spaces impOp;</code> * * @param pc * @param cfml * @return * @throws PageException */ public Object interpret(PageContext pc, ParserString cfml) throws PageException { this.cfml = cfml; this.pc = pc; if (pc != null) fld = ((ConfigImpl) pc.getConfig()).getCombinedFLDs(); if (JSON_ARRAY == null) JSON_ARRAY = fld.getFunction("_jsonArray"); if (JSON_STRUCT == null) JSON_STRUCT = fld.getFunction("_jsonStruct"); cfml.removeSpace(); Ref ref = assignOp(); cfml.removeSpace(); if (cfml.isAfterLast()) { return ref.getValue(); } throw new ExpressionException("Syntax Error, invalid Expression [" + cfml.toString() + "]"); }
public static String call(PageContext pc, Object oSrc, Object oDst) throws PageException { Resource src = Caster.toResource(pc, oSrc, false); if (!src.exists()) throw new FunctionException( pc, "FileMove", 1, "source", "source file [" + src + "] does not exist"); FileTag.actionMove( pc, pc.getConfig().getSecurityManager(), src, Caster.toString(oDst), FileUtil.NAMECONFLICT_UNDEFINED, null, null, -1, null); return null; }
private void err(PageContext pc, Throwable t) { String msg = ExceptionUtil.getStacktrace(t, true); SystemOut.print(pc.getConfig().getErrWriter(), msg); }
public static String call(PageContext pc, String host, double port) throws PageException { DeprecatedUtil.function(pc, "SSLCertificateInstall"); Admin.updateSSLCertificate(pc.getConfig(), host, (int) port); return ""; }
public static boolean hasInstance(String name, PageContext pc) { Resource res = _loadResource(pc.getConfig(), SCOPE_SESSION, name, pc.getCFID()); Struct data = _loadData(pc, res, null); return data != null; }
/** * load new instance of the class * * @param name * @param pc * @param checkExpires * @return */ public static Session getInstance(String name, PageContext pc, Log log) { Resource res = _loadResource(pc.getConfig(), SCOPE_SESSION, name, pc.getCFID()); Struct data = _loadData(pc, res, log); return new SessionFile(pc, res, data); }
private static Resource getTemp(PageContext pc) { Resource tmp = pc.getConfig().getConfigDir(); Resource dir = tmp.getRealResource("execution-log"); if (!dir.exists()) dir.mkdirs(); return dir; }
private synchronized SessionFactory getSessionFactory(PageContext pc, boolean init) throws PageException { ApplicationContextPro appContext = ((ApplicationContextPro) pc.getApplicationContext()); if (!appContext.isORMEnabled()) throw new ORMException(this, "ORM is not enabled in application.cfc/cfapplication"); this.hash = hash(appContext); // datasource String dsn = appContext.getORMDatasource(); if (StringUtil.isEmpty(dsn)) throw new ORMException(this, "missing datasource defintion in application.cfc/cfapplication"); if (!dsn.equalsIgnoreCase(datasource)) { configuration = null; if (_factory != null) _factory.close(); _factory = null; datasource = dsn.toLowerCase(); } // config ormConf = appContext.getORMConfiguration(); // List<Component> arr = null; arr = null; if (init) { if (ormConf.autogenmap()) { arr = HibernateSessionFactory.loadComponents(pc, this, ormConf); cfcs.clear(); } else throw new HibernateException(this, "orm setting autogenmap=false is not supported yet"); } // load entities if (!ArrayUtil.isEmpty(arr)) { loadNamingStrategy(ormConf); DatasourceConnectionPool pool = ((ConfigWebImpl) pc.getConfig()).getDatasourceConnectionPool(); DatasourceConnection dc = pool.getDatasourceConnection(pc, pc.getConfig().getDataSource(dsn), null, null); // DataSourceManager manager = pc.getDataSourceManager(); // DatasourceConnection dc=manager.getConnection(pc,dsn, null, null); this.ds = dc.getDatasource(); try { Iterator<ComponentPro> it = arr.iterator(); while (it.hasNext()) { createMapping(pc, it.next(), dc, ormConf); } } finally { pool.releaseDatasourceConnection(dc); // manager.releaseConnection(pc,dc); } if (arr.size() != cfcs.size()) { ComponentPro cfc; String name, lcName; Map<String, String> names = new HashMap<String, String>(); Iterator<ComponentPro> it = arr.iterator(); while (it.hasNext()) { cfc = it.next(); name = HibernateCaster.getEntityName(cfc); lcName = name.toLowerCase(); if (names.containsKey(lcName)) throw new ORMException( this, "Entity Name [" + name + "] is ambigous, [" + names.get(lcName) + "] and [" + cfc.getPageSource().getDisplayPath() + "] use the same entity name."); names.put(lcName, cfc.getPageSource().getDisplayPath()); } } } arr = null; if (configuration != null) return _factory; // MUST // cacheconfig // cacheprovider // ... String mappings = HibernateSessionFactory.createMappings(this, cfcs); DatasourceConnectionPool pool = ((ConfigWebImpl) pc.getConfig()).getDatasourceConnectionPool(); DatasourceConnection dc = pool.getDatasourceConnection(pc, pc.getConfig().getDataSource(dsn), null, null); try { configuration = HibernateSessionFactory.createConfiguration(this, mappings, dc, ormConf); } catch (Exception e) { throw Caster.toPageException(e); } finally { pool.releaseDatasourceConnection(dc); } addEventListeners(pc, configuration, ormConf, cfcs); EntityTuplizerFactory tuplizerFactory = configuration.getEntityTuplizerFactory(); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, CFCEntityTuplizer.class); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, MapEntityTuplizer.class); tuplizerFactory.registerDefaultTuplizerClass(EntityMode.MAP, AbstractEntityTuplizerImpl.class); tuplizerFactory.registerDefaultTuplizerClass(EntityMode.POJO, AbstractEntityTuplizerImpl.class); // tuplizerFactory.registerDefaultTuplizerClass(EntityMode.POJO, // AbstractEntityTuplizerImpl.class); // configuration.setEntityResolver(new CFCEntityResolver()); // configuration.setEntityNotFoundDelegate(new EntityNotFoundDelegate()); return _factory = configuration.buildSessionFactory(); }
private void err(PageContext pc, String msg) { SystemOut.print(pc.getConfig().getErrWriter(), msg); }
private static void functionCache(PageContext pc) { ConfigWebImpl config = (ConfigWebImpl) pc.getConfig(); config.clearFunctionCache(); PagePoolClear.clear(config.getServerFunctionMapping()); PagePoolClear.clear(config.getFunctionMapping()); }
private static void tagCache(PageContext pc) { ConfigWebImpl config = (ConfigWebImpl) pc.getConfig(); PagePoolClear.clear(config.getServerTagMapping()); PagePoolClear.clear(config.getTagMapping()); }
protected void _onRequest( PageContext pc, PageSource requestedPage, PageSource appPS, RequestListener rl) throws PageException { PageContextImpl pci = (PageContextImpl) pc; if (appPS != null) { String callPath = appPS.getComponentName(); ComponentAccess app = ComponentLoader.loadComponent(pci, null, appPS, callPath, false, false); // init initApplicationContext(pci, app); apps.put(pc.getApplicationContext().getName(), app); if (!pci.initApplicationContext()) return; if (rl != null) { requestedPage = rl.execute(pc, requestedPage); if (requestedPage == null) return; } String targetPage = requestedPage.getFullRealpath(); boolean doOnRequestEnd = true; // onRequestStart if (app.contains(pc, ON_REQUEST_START)) { Object rtn = call(app, pci, ON_REQUEST_START, new Object[] {targetPage}, true); if (!Caster.toBooleanValue(rtn, true)) return; } // onRequest boolean isCFC = ResourceUtil.getExtension(targetPage, "") .equalsIgnoreCase(pc.getConfig().getCFCExtension()); Object method; if (isCFC && app.contains(pc, ON_CFCREQUEST) && (method = pc.urlFormScope().get(ComponentPage.METHOD, null)) != null) { Struct url = (Struct) Duplicator.duplicate(pc.urlFormScope(), true); url.removeEL(KeyConstants._fieldnames); url.removeEL(ComponentPage.METHOD); Object args = url.get(KeyConstants._argumentCollection, null); Object returnFormat = url.removeEL(KeyConstants._returnFormat); Object queryFormat = url.removeEL(KeyConstants._queryFormat); if (args == null) { args = pc.getHttpServletRequest().getAttribute("argumentCollection"); } if (args instanceof String) { args = new JSONExpressionInterpreter().interpret(pc, (String) args); } if (args != null) { if (Decision.isCastableToStruct(args)) { Struct sct = Caster.toStruct(args, false); // Key[] keys = url.keys(); Iterator<Entry<Key, Object>> it = url.entryIterator(); Entry<Key, Object> e; while (it.hasNext()) { e = it.next(); sct.setEL(e.getKey(), e.getValue()); } args = sct; } else if (Decision.isCastableToArray(args)) { args = Caster.toArray(args); } else { Array arr = new ArrayImpl(); arr.appendEL(args); args = arr; } } else args = url; Object rtn = call( app, pci, ON_CFCREQUEST, new Object[] {requestedPage.getComponentName(), method, args}, true); if (rtn != null) { if (pc.getHttpServletRequest().getHeader("AMF-Forward") != null) { pc.variablesScope().setEL("AMF-Forward", rtn); // ThreadLocalWDDXResult.set(rtn); } else { try { pc.forceWrite( ComponentPage.convertResult( pc, app, method.toString(), returnFormat, queryFormat, rtn)); } catch (Exception e) { throw Caster.toPageException(e); } } } } // else if(!isCFC && app.contains(pc,ON_REQUEST)) {} else { // TODO impl die nicht so generisch ist try { if (!isCFC && app.contains(pc, ON_REQUEST)) call(app, pci, ON_REQUEST, new Object[] {targetPage}, false); else pci.doInclude(requestedPage); } catch (PageException pe) { if (!Abort.isSilentAbort(pe)) { if (pe instanceof MissingIncludeException) { if (((MissingIncludeException) pe).getPageSource().equals(requestedPage)) { if (app.contains(pc, ON_MISSING_TEMPLATE)) { if (!Caster.toBooleanValue( call(app, pci, ON_MISSING_TEMPLATE, new Object[] {targetPage}, true), true)) throw pe; } else throw pe; } else throw pe; } else throw pe; } else { doOnRequestEnd = false; if (app.contains(pc, ON_ABORT)) { call(app, pci, ON_ABORT, new Object[] {targetPage}, true); } } } } // onRequestEnd if (doOnRequestEnd && app.contains(pc, ON_REQUEST_END)) { call(app, pci, ON_REQUEST_END, new Object[] {targetPage}, true); } } else { apps.put(pc.getApplicationContext().getName(), null); pc.doInclude(requestedPage); } }