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