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;
    }
  }
Exemple #5
0
  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()));
  }
Exemple #6
0
  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() + "]");
  }
Exemple #8
0
  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 "";
 }
Exemple #11
0
 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;
 }
Exemple #12
0
  /**
   * 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);
 }
Exemple #16
0
 private static void functionCache(PageContext pc) {
   ConfigWebImpl config = (ConfigWebImpl) pc.getConfig();
   config.clearFunctionCache();
   PagePoolClear.clear(config.getServerFunctionMapping());
   PagePoolClear.clear(config.getFunctionMapping());
 }
Exemple #17
0
 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);
    }
  }