001 package railo.runtime.listener; 002 003 import railo.commons.io.res.Resource; 004 import railo.commons.io.res.util.ResourceUtil; 005 import railo.commons.lang.types.RefBoolean; 006 import railo.runtime.Component; 007 import railo.runtime.ComponentWrap; 008 import railo.runtime.Mapping; 009 import railo.runtime.PageContext; 010 import railo.runtime.component.Member; 011 import railo.runtime.config.ConfigWebImpl; 012 import railo.runtime.exp.PageException; 013 import railo.runtime.net.s3.Properties; 014 import railo.runtime.op.Caster; 015 import railo.runtime.op.Decision; 016 import railo.runtime.orm.ORMConfiguration; 017 import railo.runtime.type.Collection; 018 import railo.runtime.type.Collection.Key; 019 import railo.runtime.type.KeyImpl; 020 import railo.runtime.type.Scope; 021 import railo.runtime.type.Struct; 022 import railo.runtime.type.StructImpl; 023 import railo.runtime.type.cfc.ComponentAccess; 024 import railo.runtime.type.dt.TimeSpan; 025 import railo.runtime.type.util.KeyConstants; 026 027 /** 028 * @author mic 029 * 030 */ 031 /** 032 * @author mic 033 * 034 */ 035 public class ModernApplicationContext extends ApplicationContextSupport { 036 037 private static final long serialVersionUID = -8230105685329758613L; 038 039 private static final Collection.Key APPLICATION_TIMEOUT = KeyImpl.intern("applicationTimeout"); 040 private static final Collection.Key CLIENT_MANAGEMENT = KeyImpl.intern("clientManagement"); 041 private static final Collection.Key CLIENT_STORAGE = KeyImpl.intern("clientStorage"); 042 private static final Collection.Key SESSION_STORAGE = KeyImpl.intern("sessionStorage"); 043 private static final Collection.Key LOGIN_STORAGE = KeyImpl.intern("loginStorage"); 044 private static final Collection.Key SESSION_TYPE = KeyImpl.intern("sessionType"); 045 private static final Collection.Key SESSION_MANAGEMENT = KeyImpl.intern("sessionManagement"); 046 private static final Collection.Key SESSION_TIMEOUT = KeyImpl.intern("sessionTimeout"); 047 private static final Collection.Key CLIENT_TIMEOUT = KeyImpl.intern("clientTimeout"); 048 private static final Collection.Key SET_CLIENT_COOKIES = KeyImpl.intern("setClientCookies"); 049 private static final Collection.Key SET_DOMAIN_COOKIES = KeyImpl.intern("setDomainCookies"); 050 private static final Collection.Key SCRIPT_PROTECT = KeyImpl.intern("scriptProtect"); 051 private static final Collection.Key MAPPINGS = KeyImpl.intern("mappings"); 052 private static final Collection.Key CUSTOM_TAG_PATHS = KeyImpl.intern("customtagpaths"); 053 private static final Collection.Key COMPONENT_PATHS = KeyImpl.intern("componentpaths"); 054 private static final Collection.Key SECURE_JSON_PREFIX = KeyImpl.intern("secureJsonPrefix"); 055 private static final Collection.Key SECURE_JSON = KeyImpl.intern("secureJson"); 056 private static final Collection.Key LOCAL_MODE = KeyImpl.intern("localMode"); 057 private static final Collection.Key SESSION_CLUSTER = KeyImpl.intern("sessionCluster"); 058 private static final Collection.Key CLIENT_CLUSTER = KeyImpl.intern("clientCluster"); 059 060 061 private static final Collection.Key DEFAULT_DATA_SOURCE = KeyImpl.intern("defaultdatasource"); 062 private static final Collection.Key ORM_ENABLED = KeyImpl.intern("ormenabled"); 063 private static final Collection.Key ORM_SETTINGS = KeyImpl.intern("ormsettings"); 064 065 066 private ComponentAccess component; 067 private ConfigWebImpl ci; 068 069 private String name=null; 070 071 private boolean setClientCookies; 072 private boolean setDomainCookies; 073 private boolean setSessionManagement; 074 private boolean setClientManagement; 075 private TimeSpan sessionTimeout; 076 private TimeSpan clientTimeout; 077 private TimeSpan applicationTimeout; 078 private int loginStorage=Scope.SCOPE_COOKIE; 079 private int scriptProtect; 080 private String defaultDataSource; 081 private int localMode; 082 private short sessionType; 083 private boolean sessionCluster; 084 private boolean clientCluster; 085 086 087 private String clientStorage; 088 private String sessionStorage; 089 private String secureJsonPrefix="//"; 090 private boolean secureJson; 091 private Mapping[] mappings; 092 private Mapping[] ctmappings; 093 private Mapping[] cmappings; 094 private Properties s3; 095 096 private boolean initApplicationTimeout; 097 private boolean initSessionTimeout; 098 private boolean initClientTimeout; 099 private boolean initSetClientCookies; 100 private boolean initSetClientManagement; 101 private boolean initSetDomainCookies; 102 private boolean initSetSessionManagement; 103 private boolean initScriptProtect; 104 private boolean initClientStorage; 105 private boolean initSecureJsonPrefix; 106 private boolean initSecureJson; 107 private boolean initSessionStorage; 108 private boolean initSessionCluster; 109 private boolean initClientCluster; 110 private boolean initLoginStorage; 111 private boolean initSessionType; 112 private boolean initMappings; 113 private boolean initCTMappings; 114 private boolean initCMappings; 115 private boolean initLocalMode; 116 private boolean initS3; 117 private boolean ormEnabled; 118 private ORMConfiguration ormConfig; 119 private String ormDatasource; 120 121 public ModernApplicationContext(PageContext pc, ComponentAccess cfc, RefBoolean throwsErrorWhileInit) { 122 ci = ((ConfigWebImpl)pc.getConfig()); 123 setClientCookies=ci.isClientCookies(); 124 setDomainCookies=ci.isDomainCookies(); 125 setSessionManagement=ci.isSessionManagement(); 126 setClientManagement=ci.isClientManagement(); 127 sessionTimeout=ci.getSessionTimeout(); 128 clientTimeout=ci.getClientTimeout(); 129 applicationTimeout=ci.getApplicationTimeout(); 130 scriptProtect=ci.getScriptProtect(); 131 this.defaultDataSource=ci.getDefaultDataSource(); 132 this.localMode=ci.getLocalMode(); 133 this.sessionType=ci.getSessionType(); 134 this.sessionCluster=ci.getSessionCluster(); 135 this.clientCluster=ci.getClientCluster(); 136 137 138 139 this.component=cfc; 140 141 pc.addPageSource(component.getPageSource(), true); 142 try { 143 144 145 146 147 148 /////////// ORM ///////////////////////////////// 149 reinitORM(pc); 150 151 152 throwsErrorWhileInit.setValue(false); 153 } 154 catch(Throwable t) { 155 throwsErrorWhileInit.setValue(true); 156 pc.removeLastPageSource(true); 157 } 158 } 159 160 161 162 public void reinitORM(PageContext pc) throws PageException { 163 164 // datasource 165 Object o = get(component,KeyImpl.DATA_SOURCE,null); 166 if(o!=null) { 167 String ds; 168 if(Decision.isStruct(o)) { 169 Struct sct = Caster.toStruct(o); 170 ds=Caster.toString(sct.get(KeyConstants._name)); 171 } 172 else ds = Caster.toString(o); 173 this.defaultDataSource = ds; 174 this.ormDatasource = ds; 175 } 176 177 // default datasource 178 o=get(component,DEFAULT_DATA_SOURCE,null); 179 if(o!=null) this.defaultDataSource =Caster.toString(o); 180 181 // ormenabled 182 o = get(component,ORM_ENABLED,null); 183 if(o!=null && Caster.toBooleanValue(o,false)){ 184 this.ormEnabled=true; 185 186 // settings 187 o=get(component,ORM_SETTINGS,null); 188 Struct settings; 189 if(o instanceof Struct) settings=(Struct) o; 190 else settings=new StructImpl(); 191 AppListenerUtil.setORMConfiguration(pc, this, settings); 192 } 193 } 194 195 196 197 /** 198 * @see railo.runtime.util.ApplicationContext#hasName() 199 */ 200 public boolean hasName() { 201 return true;//!StringUtil.isEmpty(getName()); 202 } 203 204 /** 205 * @see railo.runtime.util.ApplicationContext#getName() 206 */ 207 public String getName() { 208 if(this.name==null) { 209 this.name=Caster.toString(get(component,KeyImpl.NAME,""),""); 210 } 211 return name; 212 } 213 214 /** 215 * @see railo.runtime.util.ApplicationContext#getLoginStorage() 216 */ 217 public int getLoginStorage() { 218 if(!initLoginStorage) { 219 String str=null; 220 Object o = get(component,LOGIN_STORAGE,null); 221 if(o!=null){ 222 str=Caster.toString(o,null); 223 if(str!=null)loginStorage=AppListenerUtil.translateLoginStorage(str,loginStorage); 224 } 225 initLoginStorage=true; 226 } 227 return loginStorage; 228 } 229 230 /** 231 * @see railo.runtime.util.ApplicationContext#getApplicationTimeout() 232 */ 233 public TimeSpan getApplicationTimeout() { 234 if(!initApplicationTimeout) { 235 Object o=get(component,APPLICATION_TIMEOUT,null); 236 if(o!=null)applicationTimeout=Caster.toTimespan(o,applicationTimeout); 237 initApplicationTimeout=true; 238 } 239 return applicationTimeout; 240 } 241 242 /** 243 * @see railo.runtime.util.ApplicationContext#getSessionTimeout() 244 */ 245 public TimeSpan getSessionTimeout() { 246 if(!initSessionTimeout) { 247 Object o=get(component,SESSION_TIMEOUT,null); 248 if(o!=null)sessionTimeout=Caster.toTimespan(o,sessionTimeout); 249 initSessionTimeout=true; 250 } 251 return sessionTimeout; 252 } 253 254 /** 255 * @see railo.runtime.listener.ApplicationContextPro#getClientTimeout() 256 */ 257 public TimeSpan getClientTimeout() { 258 if(!initClientTimeout) { 259 Object o=get(component,CLIENT_TIMEOUT,null); 260 if(o!=null)clientTimeout=Caster.toTimespan(o,clientTimeout); 261 initClientTimeout=true; 262 } 263 return clientTimeout; 264 } 265 266 /** 267 * @see railo.runtime.util.ApplicationContext#isSetClientCookies() 268 */ 269 public boolean isSetClientCookies() { 270 if(!initSetClientCookies) { 271 Object o = get(component,SET_CLIENT_COOKIES,null); 272 if(o!=null)setClientCookies=Caster.toBooleanValue(o,setClientCookies); 273 initSetClientCookies=true; 274 } 275 return setClientCookies; 276 } 277 278 /** 279 * @see railo.runtime.util.ApplicationContext#isSetClientManagement() 280 */ 281 public boolean isSetClientManagement() { 282 if(!initSetClientManagement) { 283 Object o = get(component,CLIENT_MANAGEMENT,null); 284 if(o!=null)setClientManagement=Caster.toBooleanValue(o,setClientManagement); 285 initSetClientManagement=true; 286 } 287 return setClientManagement; 288 } 289 290 /** 291 * @see railo.runtime.util.ApplicationContext#isSetDomainCookies() 292 */ 293 public boolean isSetDomainCookies() { 294 if(!initSetDomainCookies) { 295 Object o = get(component,SET_DOMAIN_COOKIES,null); 296 if(o!=null)setDomainCookies=Caster.toBooleanValue(o,setDomainCookies); 297 initSetDomainCookies=true; 298 } 299 return setDomainCookies; 300 } 301 302 /** 303 * @see railo.runtime.util.ApplicationContext#isSetSessionManagement() 304 */ 305 public boolean isSetSessionManagement() { 306 if(!initSetSessionManagement) { 307 Object o = get(component,SESSION_MANAGEMENT,null); 308 if(o!=null)setSessionManagement=Caster.toBooleanValue(o,setSessionManagement); 309 initSetSessionManagement=true; 310 } 311 return setSessionManagement; 312 } 313 314 /** 315 * @see railo.runtime.util.ApplicationContext#getClientstorage() 316 */ 317 public String getClientstorage() { 318 if(!initClientStorage) { 319 Object o=get(component,CLIENT_STORAGE,null); 320 if(o!=null)clientStorage=Caster.toString(o,clientStorage); 321 initClientStorage=true; 322 } 323 return clientStorage; 324 } 325 326 /** 327 * @see railo.runtime.util.ApplicationContext#getScriptProtect() 328 */ 329 public int getScriptProtect() { 330 if(!initScriptProtect) { 331 String str=null; 332 Object o = get(component,SCRIPT_PROTECT,null); 333 if(o!=null){ 334 str=Caster.toString(o,null); 335 if(str!=null)scriptProtect=AppListenerUtil.translateScriptProtect(str); 336 } 337 initScriptProtect=true; 338 } 339 return scriptProtect; 340 } 341 342 /** 343 * @see railo.runtime.util.ApplicationContext#getSecureJsonPrefix() 344 */ 345 public String getSecureJsonPrefix() { 346 if(!initSecureJsonPrefix) { 347 Object o=get(component,SECURE_JSON_PREFIX,null); 348 if(o!=null)secureJsonPrefix=Caster.toString(o,secureJsonPrefix); 349 initSecureJsonPrefix=true; 350 } 351 return secureJsonPrefix; 352 } 353 354 /** 355 * @see railo.runtime.util.ApplicationContext#getSecureJson() 356 */ 357 public boolean getSecureJson() { 358 if(!initSecureJson) { 359 Object o = get(component,SECURE_JSON,null); 360 if(o!=null)secureJson=Caster.toBooleanValue(o,secureJson); 361 initSecureJson=true; 362 } 363 return secureJson; 364 } 365 366 /** 367 * @see railo.runtime.listener.ApplicationContextPro#getSessionstorage() 368 */ 369 public String getSessionstorage() { 370 if(!initSessionStorage) { 371 Object o=get(component,SESSION_STORAGE,null); 372 if(o!=null)sessionStorage=Caster.toString(o,sessionStorage); 373 initSessionStorage=true; 374 } 375 return sessionStorage; 376 } 377 378 /** 379 * @see railo.runtime.listener.ApplicationContextPro#getSessionCluster() 380 */ 381 public boolean getSessionCluster() { 382 if(!initSessionCluster) { 383 Object o = get(component,SESSION_CLUSTER,null); 384 if(o!=null)sessionCluster=Caster.toBooleanValue(o,sessionCluster); 385 initSessionCluster=true; 386 } 387 return sessionCluster; 388 } 389 390 /** 391 * @see railo.runtime.listener.ApplicationContextPro#getClientCluster() 392 */ 393 public boolean getClientCluster() { 394 if(!initClientCluster) { 395 Object o = get(component,CLIENT_CLUSTER,null); 396 if(o!=null)clientCluster=Caster.toBooleanValue(o,clientCluster); 397 initClientCluster=true; 398 } 399 return clientCluster; 400 } 401 402 /** 403 * @see railo.runtime.listener.ApplicationContextPro#getSessionType() 404 */ 405 public short getSessionType() { 406 if(!initSessionType) { 407 String str=null; 408 Object o = get(component,SESSION_TYPE,null); 409 if(o!=null){ 410 str=Caster.toString(o,null); 411 if(str!=null)sessionType=AppListenerUtil.toSessionType(str, sessionType); 412 } 413 initSessionType=true; 414 } 415 return sessionType; 416 } 417 418 /** 419 * @see railo.runtime.util.ApplicationContext#getMappings() 420 */ 421 public Mapping[] getMappings() { 422 if(!initMappings) { 423 Object o = get(component,MAPPINGS,null); 424 if(o!=null)mappings=AppListenerUtil.toMappings(ci,o,mappings); 425 initMappings=true; 426 } 427 return mappings; 428 } 429 430 /** 431 * @see railo.runtime.util.ApplicationContext#getCustomTagMappings() 432 */ 433 public Mapping[] getCustomTagMappings() { 434 if(!initCTMappings) { 435 Object o = get(component,CUSTOM_TAG_PATHS,null); 436 if(o!=null)ctmappings=AppListenerUtil.toCustomTagMappings(ci,o,ctmappings); 437 initCTMappings=true; 438 } 439 return ctmappings; 440 } 441 442 /** 443 * @see railo.runtime.listener.ApplicationContextPro#getComponentMappings() 444 */ 445 public Mapping[] getComponentMappings() { 446 if(!initCMappings) { 447 Object o = get(component,COMPONENT_PATHS,null); 448 if(o!=null)cmappings=AppListenerUtil.toCustomTagMappings(ci,o,cmappings); 449 initCMappings=true; 450 } 451 return cmappings; 452 } 453 454 /** 455 * @see railo.runtime.listener.ApplicationContextPro#getLocalMode() 456 */ 457 public int getLocalMode() { 458 if(!initLocalMode) { 459 Object o = get(component,LOCAL_MODE,null); 460 if(o!=null)localMode=AppListenerUtil.toLocalMode(o, localMode); 461 initLocalMode=true; 462 } 463 return localMode; 464 } 465 466 /** 467 * @see railo.runtime.listener.ApplicationContextPro#getS3() 468 */ 469 public Properties getS3() { 470 if(!initS3) { 471 Object o = get(component,KeyImpl.S3,null); 472 if(o!=null && Decision.isStruct(o))s3=AppListenerUtil.toS3(Caster.toStruct(o,null)); 473 initS3=true; 474 } 475 return s3; 476 } 477 478 /** 479 * @see railo.runtime.listener.ApplicationContextPro#getDefaultDataSource() 480 */ 481 public String getDefaultDataSource() { 482 return defaultDataSource; 483 } 484 485 /** 486 * @see railo.runtime.listener.ApplicationContextPro#isORMEnabled() 487 */ 488 public boolean isORMEnabled() { 489 return this.ormEnabled; 490 } 491 492 /** 493 * @see railo.runtime.listener.ApplicationContextPro#getORMDatasource() 494 */ 495 public String getORMDatasource() { 496 return ormDatasource; 497 } 498 499 /** 500 * @see railo.runtime.listener.ApplicationContextPro#getORMConfiguration() 501 */ 502 public ORMConfiguration getORMConfiguration() { 503 return ormConfig; 504 } 505 506 /** 507 * @see railo.runtime.listener.ApplicationContextPro#getComponent() 508 */ 509 public ComponentAccess getComponent() { 510 return component; 511 } 512 513 /** 514 * @see railo.runtime.listener.ApplicationContextPro#getCustom(railo.runtime.type.Collection.Key) 515 */ 516 public Object getCustom(Key key) { 517 try { 518 ComponentWrap cw=ComponentWrap.toComponentWrap(Component.ACCESS_PRIVATE, component); 519 return cw.get(key,null); 520 } 521 catch (Throwable t) {} 522 523 return null; 524 } 525 526 527 528 529 530 531 private static Object get(ComponentAccess app, Key name,String defaultValue) { 532 Member mem = app.getMember(Component.ACCESS_PRIVATE, name, true, false); 533 if(mem==null) return defaultValue; 534 return mem.getValue(); 535 } 536 537 538 //////////////////////// SETTERS ///////////////////////// 539 540 541 542 /* (non-Javadoc) 543 * @see railo.runtime.util.ApplicationContextPro#setApplicationTimeout(railo.runtime.type.dt.TimeSpan) 544 */ 545 public void setApplicationTimeout(TimeSpan applicationTimeout) { 546 initApplicationTimeout=true; 547 this.applicationTimeout=applicationTimeout; 548 } 549 550 /* (non-Javadoc) 551 * @see railo.runtime.util.ApplicationContextPro#setSessionTimeout(railo.runtime.type.dt.TimeSpan) 552 */ 553 public void setSessionTimeout(TimeSpan sessionTimeout) { 554 initSessionTimeout=true; 555 this.sessionTimeout=sessionTimeout; 556 } 557 558 /* (non-Javadoc) 559 * @see railo.runtime.util.ApplicationContextPro#setClientTimeout(railo.runtime.type.dt.TimeSpan) 560 */ 561 public void setClientTimeout(TimeSpan clientTimeout) { 562 initClientTimeout=true; 563 this.clientTimeout=clientTimeout; 564 } 565 566 /* (non-Javadoc) 567 * @see railo.runtime.util.ApplicationContextPro#setClientstorage(java.lang.String) 568 */ 569 public void setClientstorage(String clientstorage) { 570 initClientStorage=true; 571 this.clientStorage=clientstorage; 572 } 573 574 /* (non-Javadoc) 575 * @see railo.runtime.util.ApplicationContextPro#setSessionstorage(java.lang.String) 576 */ 577 public void setSessionstorage(String sessionstorage) { 578 initSessionStorage=true; 579 this.sessionStorage=sessionstorage; 580 } 581 582 /* (non-Javadoc) 583 * @see railo.runtime.util.ApplicationContextPro#setCustomTagMappings(railo.runtime.Mapping[]) 584 */ 585 public void setCustomTagMappings(Mapping[] customTagMappings) { 586 initCTMappings=true; 587 this.ctmappings=customTagMappings; 588 } 589 590 /* (non-Javadoc) 591 * @see railo.runtime.util.ApplicationContextPro#setComponentMappings(railo.runtime.Mapping[]) 592 */ 593 public void setComponentMappings(Mapping[] componentMappings) { 594 initCMappings=true; 595 this.cmappings=componentMappings; 596 } 597 598 /* (non-Javadoc) 599 * @see railo.runtime.util.ApplicationContextPro#setMappings(railo.runtime.Mapping[]) 600 */ 601 public void setMappings(Mapping[] mappings) { 602 initMappings=true; 603 this.mappings=mappings; 604 } 605 606 /* (non-Javadoc) 607 * @see railo.runtime.util.ApplicationContextPro#setLoginStorage(int) 608 */ 609 public void setLoginStorage(int loginStorage) { 610 initLoginStorage=true; 611 this.loginStorage=loginStorage; 612 } 613 614 @Override 615 public void setDefaultDataSource(String datasource) { 616 this.defaultDataSource=datasource; 617 } 618 619 /* (non-Javadoc) 620 * @see railo.runtime.util.ApplicationContextPro#setScriptProtect(int) 621 */ 622 public void setScriptProtect(int scriptrotect) { 623 initScriptProtect=true; 624 this.scriptProtect=scriptrotect; 625 } 626 627 /* (non-Javadoc) 628 * @see railo.runtime.util.ApplicationContextPro#setSecureJson(boolean) 629 */ 630 public void setSecureJson(boolean secureJson) { 631 initSecureJson=true; 632 this.secureJson=secureJson; 633 } 634 635 /* (non-Javadoc) 636 * @see railo.runtime.util.ApplicationContextPro#setSecureJsonPrefix(java.lang.String) 637 */ 638 public void setSecureJsonPrefix(String secureJsonPrefix) { 639 initSecureJsonPrefix=true; 640 this.secureJsonPrefix=secureJsonPrefix; 641 } 642 643 /* (non-Javadoc) 644 * @see railo.runtime.util.ApplicationContextPro#setSetClientCookies(boolean) 645 */ 646 public void setSetClientCookies(boolean setClientCookies) { 647 initSetClientCookies=true; 648 this.setClientCookies=setClientCookies; 649 } 650 651 /* (non-Javadoc) 652 * @see railo.runtime.util.ApplicationContextPro#setSetClientManagement(boolean) 653 */ 654 public void setSetClientManagement(boolean setClientManagement) { 655 initSetClientManagement=true; 656 this.setClientManagement=setClientManagement; 657 } 658 659 /* (non-Javadoc) 660 * @see railo.runtime.util.ApplicationContextPro#setSetDomainCookies(boolean) 661 */ 662 public void setSetDomainCookies(boolean setDomainCookies) { 663 initSetDomainCookies=true; 664 this.setDomainCookies=setDomainCookies; 665 } 666 667 /* (non-Javadoc) 668 * @see railo.runtime.util.ApplicationContextPro#setSetSessionManagement(boolean) 669 */ 670 public void setSetSessionManagement(boolean setSessionManagement) { 671 initSetSessionManagement=true; 672 this.setSessionManagement=setSessionManagement; 673 } 674 675 /* (non-Javadoc) 676 * @see railo.runtime.util.ApplicationContextPro#setLocalMode(int) 677 */ 678 public void setLocalMode(int localMode) { 679 initLocalMode=true; 680 this.localMode=localMode; 681 } 682 683 /** 684 * @see railo.runtime.listener.ApplicationContextPro#setSessionType(short) 685 */ 686 public void setSessionType(short sessionType) { 687 initSessionType=true; 688 this.sessionType=sessionType; 689 } 690 691 /* (non-Javadoc) 692 * @see railo.runtime.util.ApplicationContextPro#setClientCluster(boolean) 693 */ 694 public void setClientCluster(boolean clientCluster) { 695 initClientCluster=true; 696 this.clientCluster=clientCluster; 697 } 698 699 /* (non-Javadoc) 700 * @see railo.runtime.util.ApplicationContextPro#setSessionCluster(boolean) 701 */ 702 public void setSessionCluster(boolean sessionCluster) { 703 initSessionCluster=true; 704 this.sessionCluster=sessionCluster; 705 } 706 707 /** 708 * @see railo.runtime.listener.ApplicationContextPro#setS3(railo.runtime.net.s3.Properties) 709 */ 710 public void setS3(Properties s3) { 711 initS3=true; 712 this.s3=s3; 713 } 714 715 /** 716 * @see railo.runtime.listener.ApplicationContextPro#setORMEnabled(boolean) 717 */ 718 public void setORMEnabled(boolean ormEnabled) { 719 this.ormEnabled=ormEnabled; 720 } 721 722 public void setORMConfiguration(ORMConfiguration ormConfig) { 723 this.ormConfig=ormConfig; 724 } 725 726 /** 727 * @see railo.runtime.listener.ApplicationContextPro#setORMDatasource(java.lang.String) 728 */ 729 public void setORMDatasource(String ormDatasource) { 730 this.ormDatasource=ormDatasource; 731 } 732 733 @Override 734 public Resource getSource() { 735 return component.getPageSource().getPhyscalFile(); 736 } 737 738 739 }