001 package railo.runtime.orm; 002 003 004 import railo.runtime.Component; 005 import railo.runtime.db.DataSource; 006 import railo.runtime.exp.ApplicationException; 007 import railo.runtime.exp.ExpressionException; 008 import railo.runtime.exp.PageException; 009 import railo.runtime.exp.PageExceptionImpl; 010 import railo.runtime.op.Caster; 011 import railo.runtime.type.List; 012 import railo.runtime.type.util.ComponentUtil; 013 014 public class ORMException extends ApplicationException { 015 016 /** 017 * Constructor of the class 018 * @param message 019 */ 020 public ORMException(Component cfc,String message) { 021 super(message); 022 setContext(cfc); 023 } 024 025 public ORMException(ORMEngine engine,Component cfc,String message) { 026 super(message); 027 setAddional(engine,this); 028 setContext(cfc); 029 } 030 031 public ORMException(ORMEngine engine,String message) { 032 super(message); 033 setAddional(engine,this); 034 } 035 036 /** 037 * Constructor of the class 038 * @param message 039 * @param detail 040 */ 041 public ORMException(Component cfc,String message, String detail) { 042 super(message, detail); 043 setContext(cfc); 044 } 045 public ORMException(String message, String detail) { 046 super(message, detail); 047 } 048 049 050 public ORMException(ORMEngine engine,Component cfc,String message, String detail) { 051 super(message, detail); 052 setAddional(engine, this); 053 setContext(cfc); 054 } 055 056 057 public ORMException(ORMEngine engine,String message, String detail) { 058 super(message, detail); 059 setAddional(engine, this); 060 } 061 062 063 /*public ORMException(String message) { 064 super(message); 065 }*/ 066 067 068 private void setContext(Component cfc) { 069 try { 070 if(cfc!=null && getPageDeep()==0)addContext(ComponentUtil.toComponentPro(cfc).getPageSource(), 1, 1, null); 071 072 073 } 074 catch (ExpressionException e) {} 075 } 076 077 public static PageException toPageException(ORMEngine engine,Throwable t) { 078 Throwable c = t.getCause(); 079 if(c!=null)t=c; 080 PageException pe = Caster.toPageException(t); 081 setAddional(engine, pe); 082 return pe; 083 } 084 085 public static void setAddional(ORMEngine engine,PageException pe) { 086 String[] names = engine.getEntityNames(); 087 088 if(pe instanceof PageExceptionImpl){ 089 PageExceptionImpl pei = (PageExceptionImpl)pe; 090 String dsn=null; 091 DataSource ds = engine.getDataSource(); 092 if(ds!=null) dsn=ds.getName(); 093 pei.setAdditional("Entities", List.arrayToList(names, ", ")); 094 if(dsn!=null)pei.setAdditional("Datasource", dsn); 095 } 096 } 097 098 public ORMException(Throwable t) { 099 super(t.getMessage()); 100 } 101 102 }