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; }
private static ComponentImpl initComponent( PageContext pc, CIPage page, String callPath, boolean isRealPath, boolean isExtendedComponent, boolean executeConstr) throws PageException { // is not a component, then it has to be a interface if (!(page instanceof ComponentPageImpl)) throw new ApplicationException( "you cannot instantiate the interface [" + page.getPageSource().getDisplayPath() + "] as a component (" + page.getClass().getName() + "" + (page instanceof InterfacePageImpl) + ")"); ComponentPageImpl cp = (ComponentPageImpl) page; ComponentImpl c = cp.newInstance(pc, callPath, isRealPath, isExtendedComponent, executeConstr); // abstract/final check if (!isExtendedComponent) { if (c.getModifier() == Component.MODIFIER_ABSTRACT) throw new ApplicationException( "you cannot instantiate an abstract component [" + page.getPageSource().getDisplayPath() + "], this component can only be extended by other components"); } else if (c.getModifier() == Component.MODIFIER_FINAL) throw new ApplicationException( "you cannot extend a final component [" + page.getPageSource().getDisplayPath() + "]"); c.setInitalized(true); return c; }