Update of /cvsroot/wonder/Wonder/Deployment/JavaMonitor/Sources/com/webobjects/monitor/application In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv17014/Deployment/JavaMonitor/Sources/com/webobjects/monitor/application Added Files: AppConfigurePage.java AppConfirmDeletePage.java AppDeathPage.java AppDetailPage.java Application.java ApplicationsPage.java ConfigurePage.java DirectAction.java FileBrowser.java HelpPage.java HostConfigurePage.java HostConfirmDeletePage.java HostsPage.java InstConfigurePage.java InstConfirmDeletePage.java KeyValueCodingProtectedAccessor.java Main.java MigrationPage.java MonitorComponent.java NavigationPage.java PathWizardPage1.java PathWizardPage2.java PrefsPage.java RemoteBrowseClient.java Session.java StopAllConfirmPage.java WotaskdInfoPage.java Log Message: Deployment stuff added --- NEW FILE: AppConfigurePage.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import com.webobjects.appserver.WOComponent; import com.webobjects.foundation.NSArray; import com.webobjects.monitor._private.MApplication; import com.webobjects.monitor._private.MInstance; import com.webobjects.monitor._private.MObject; import com.webobjects.monitor._private.MSiteConfig; import com.webobjects.monitor._private.String_Extensions; public class AppConfigurePage extends MonitorComponent { /** * serialVersionUID */ private static final long serialVersionUID = 1L; private static MSiteConfig _sc = new MSiteConfig(null); public boolean isNewInstanceSectionVisible = false; public boolean isAppConfigureSectionVisible = false; public boolean isEmailSectionVisible = false; public boolean isSchedulingSectionVisible = false; public boolean isAdaptorSettingsSectionVisible = false; MApplication appDefaults = new MApplication(mySession().mApplication.values(), _sc, null); public WOComponent detailPageClicked() { return pageWithName("AppDetailPage"); } public WOComponent configurePageClicked() { ConfigurePage aPage = (ConfigurePage) pageWithName("ConfigurePage"); return aPage; } /********** New Instance Defaults *********/ public WOComponent defaultsUpdateClicked() { theApplication._lock.startReading(); try { mySession().mApplication.setValues(appDefaults.values()); if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateApplicationToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isNewInstanceSectionVisible = true; return aPage; } public WOComponent updateAppDefaultsOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setStartingPort(appDefaults.startingPort()); mySession().mApplication.setTimeForStartup(appDefaults.timeForStartup()); mySession().mApplication.setPhasedStartup(appDefaults.phasedStartup()); mySession().mApplication.setAdaptor(appDefaults.adaptor()); mySession().mApplication.setAdaptorThreads(appDefaults.adaptorThreads()); mySession().mApplication.setListenQueueSize(appDefaults.listenQueueSize()); mySession().mApplication.setAdaptorThreadsMin(appDefaults.adaptorThreadsMin()); mySession().mApplication.setAdaptorThreadsMax(appDefaults.adaptorThreadsMax()); mySession().mApplication.setProjectSearchPath(appDefaults.projectSearchPath()); mySession().mApplication.setSessionTimeOut(appDefaults.sessionTimeOut()); mySession().mApplication.setStatisticsPassword(appDefaults.statisticsPassword()); boolean pushAppOnly = true; if (mySession().mApplication.isStopped_M()) { String defaultsName = appDefaults.name(); if (!defaultsName.equals(mySession().mApplication.name())) { MApplication app = mySession().mApplication.siteConfig().applicationWithName(appDefaults.name()); if (app == null) { pushAppOnly = false; mySession().mApplication.setName(defaultsName); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeNameFromApplication(); } } } } if (pushAppOnly) { if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateApplicationToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } else { _defaultsPush(); } } finally { theApplication._lock.endReading(); } AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isAppConfigureSectionVisible = true; return aPage; } private void _defaultsPush() { if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateApplicationAndInstancesToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } private WOComponent _defaultPage() { AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isNewInstanceSectionVisible = true; return aPage; } public WOComponent defaultsPushClicked() { theApplication._lock.startReading(); try { mySession().mApplication.setValues(appDefaults.values()); mySession().mApplication.pushValuesToInstances(); _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updatePathOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setUnixPath(appDefaults.unixPath()); mySession().mApplication.setWinPath(appDefaults.winPath()); mySession().mApplication.setMacPath(appDefaults.macPath()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takePathFromApplication(); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateAutoRecoverOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setAutoRecover(appDefaults.autoRecover()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("autoRecover"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateMinimumOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setMinimumActiveSessionsCount(appDefaults.minimumActiveSessionsCount()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("minimumActiveSessionsCount"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateCachingOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setCachingEnabled(appDefaults.cachingEnabled()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("cachingEnabled"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateDebuggingOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setDebuggingEnabled(appDefaults.debuggingEnabled()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("debuggingEnabled"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateOutputOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setUnixOutputPath(appDefaults.unixOutputPath()); mySession().mApplication.setWinOutputPath(appDefaults.winOutputPath()); mySession().mApplication.setMacOutputPath(appDefaults.macOutputPath()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeOutputPathFromApplication(); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateAutoOpenOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setAutoOpenInBrowser(appDefaults.autoOpenInBrowser()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("autoOpenInBrowser"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateLifebeatOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setLifebeatInterval(appDefaults.lifebeatInterval()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("lifebeatInterval"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } public WOComponent updateAddArgsOnly() { theApplication._lock.startReading(); try { mySession().mApplication.setAdditionalArgs(appDefaults.additionalArgs()); NSArray _instanceArray = mySession().mApplication.instanceArray(); int instanceArrayCount = _instanceArray.count(); for (int i=0; i<instanceArrayCount; i++) { MInstance anInstance = (MInstance) _instanceArray.objectAtIndex(i); anInstance._takeValueFromApplication("additionalArgs"); } _defaultsPush(); } finally { theApplication._lock.endReading(); } return _defaultPage(); } /********** Path Wizard *********/ private WOComponent _pathPickerWizardClicked(String callbackKeyPath, boolean showFiles) { PathWizardPage1 aPage = (PathWizardPage1) pageWithName("PathWizardPage1"); aPage.setCallbackKeypath(callbackKeyPath); aPage.setCallbackExpand("isNewInstanceSectionVisible"); aPage.setCallbackPage(this); aPage.setShowFiles(showFiles); return aPage; } public WOComponent pathPickerWizardClickedUnix() { return _pathPickerWizardClicked("appDefaults.unixPath", true); } public WOComponent pathPickerWizardClickedWindows() { return _pathPickerWizardClicked("appDefaults.winPath", true); } public WOComponent pathPickerWizardClickedMac() { return _pathPickerWizardClicked("appDefaults.macPath", true); } public WOComponent pathPickerWizardClickedUnixOutput() { return _pathPickerWizardClicked("appDefaults.unixOutputPath", false); } public WOComponent pathPickerWizardClickedWindowsOutput() { return _pathPickerWizardClicked("appDefaults.winOutputPath", false); } public WOComponent pathPickerWizardClickedMacOutput() { return _pathPickerWizardClicked("appDefaults.macOutputPath", false); } /**********/ /********** Email Section *********/ public boolean isMailingConfigured() { String aHost = theApplication.siteConfig().SMTPhost(); String anAddress = theApplication.siteConfig().emailReturnAddr(); if (aHost != null && aHost.length() > 0 && anAddress != null && anAddress.length() > 0) { return true; } return false; } public WOComponent emailUpdateClicked() { theApplication._lock.startReading(); try { if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateApplicationToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isEmailSectionVisible = true; return aPage; } /**********/ /********** Scheduling Section *********/ boolean shouldSchedule() { if (mySession().mApplication.instanceArray().count() != 0) return true; return false; } MInstance currentScheduledInstance; NSArray weekList = MObject.weekArray; NSArray timeOfDayList = MObject.timeOfDayArray; NSArray schedulingTypeList = MObject.schedulingTypeArray; NSArray schedulingIntervalList = MObject.schedulingIntervalArray; String weekSelection() { return MObject.morphedSchedulingStartDay(currentScheduledInstance.schedulingStartDay()); } void setWeekSelection(String value) { currentScheduledInstance.setSchedulingStartDay(MObject.morphedSchedulingStartDay(value)); } String timeHourlySelection() { return MObject.morphedSchedulingStartTime(currentScheduledInstance.schedulingHourlyStartTime()); } void setTimeHourlySelection(String value) { currentScheduledInstance.setSchedulingHourlyStartTime(MObject.morphedSchedulingStartTime(value)); } String timeDailySelection() { return MObject.morphedSchedulingStartTime(currentScheduledInstance.schedulingDailyStartTime()); } void setTimeDailySelection(String value) { currentScheduledInstance.setSchedulingDailyStartTime(MObject.morphedSchedulingStartTime(value)); } String timeWeeklySelection() { return MObject.morphedSchedulingStartTime(currentScheduledInstance.schedulingWeeklyStartTime()); } void setTimeWeeklySelection(String value) { currentScheduledInstance.setSchedulingWeeklyStartTime(MObject.morphedSchedulingStartTime(value)); } public WOComponent schedulingUpdateClicked() { theApplication._lock.startReading(); try { if ( (mySession().mApplication.instanceArray().count() != 0) && (theApplication.siteConfig().hostArray().count() != 0) ) { sendUpdateInstancesToWotaskds(mySession().mApplication.instanceArray(), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isSchedulingSectionVisible = true; return aPage; } /**********/ /********** Adaptor Settings Section *********/ String _loadSchedulerSelection = null; String loadSchedulerItem; NSArray loadSchedulerList = MObject.loadSchedulerArray; Integer urlVersionItem; NSArray urlVersionList = MObject.urlVersionArray; String customSchedulerName; String loadSchedulerSelection() { if (mySession().mApplication.scheduler() != null) { int indexOfScheduler = MObject.loadSchedulerArrayValues.indexOfObject(mySession().mApplication.scheduler()); if (indexOfScheduler != -1) { _loadSchedulerSelection = (String) loadSchedulerList.objectAtIndex(indexOfScheduler); } else { // Custom scheduler _loadSchedulerSelection = (String) loadSchedulerList.objectAtIndex(loadSchedulerList.count()-1); customSchedulerName = mySession().mApplication.scheduler(); } } return _loadSchedulerSelection; } void setLoadSchedulerSelection(String value) { _loadSchedulerSelection = value; } Integer urlVersionSelection() { return mySession().mApplication.urlVersion(); } void setUrlVersionSelection(Integer value) { mySession().mApplication.setUrlVersion(value); } public WOComponent adaptorUpdateClicked() { theApplication._lock.startReading(); try { String newValue; int i = loadSchedulerList.indexOfObject(_loadSchedulerSelection); if (i == 0) { newValue = null; } else if (i == (loadSchedulerList.count()-1)) { newValue = customSchedulerName; if (!String_Extensions.isValidXMLString(newValue)) { newValue = null; } } else { newValue = (String) MObject.loadSchedulerArrayValues.objectAtIndex(i); } mySession().mApplication.setScheduler(newValue); if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateApplicationToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isAdaptorSettingsSectionVisible = true; return aPage; } /**********/ } --- NEW FILE: AppConfirmDeletePage.java --- package com.webobjects.monitor.application; /* © Copyright 2006 - 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import com.webobjects.appserver.WOComponent; public class AppConfirmDeletePage extends MonitorComponent { private static final long serialVersionUID = -755026353794418667L; public WOComponent deleteClicked() { theApplication._lock.startWriting(); try { theApplication.siteConfig().removeApplication_M(mySession().mApplication); if (theApplication.siteConfig().hostArray().count() != 0) { sendRemoveApplicationToWotaskds(mySession().mApplication, theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endWriting(); } return pageWithName("ApplicationsPage"); } public WOComponent cancelClicked() { return pageWithName("ApplicationsPage"); } } --- NEW FILE: AppDeathPage.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import com.webobjects.appserver.WOComponent; import com.webobjects.foundation.NSArray; import com.webobjects.monitor._private.MHost; import com.webobjects.monitor._private.MInstance; public class AppDeathPage extends MonitorComponent { private static final long serialVersionUID = -2462045617649768062L; public Object aDeath; public int anIndex; public WOComponent clearDeathsClicked() { sendCommandInstancesToWotaskds("CLEAR", new NSArray <MInstance>(mySession().mInstance), new NSArray <MHost>(mySession().mInstance.host())); return pageWithName("AppDetailPage"); } public WOComponent returnClicked() { return pageWithName("AppDetailPage"); } public int anIndexPlusOne() { return (anIndex + 1); } } --- NEW FILE: AppDetailPage.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import com.webobjects.appserver.WOApplication; import com.webobjects.appserver.WOComponent; import com.webobjects.foundation.NSArray; import com.webobjects.foundation.NSMutableArray; import com.webobjects.monitor._private.MHost; import com.webobjects.monitor._private.MInstance; import com.webobjects.monitor._private.MObject; import com.webobjects.monitor._private.StatsUtilities; public class AppDetailPage extends MonitorComponent { private static final long serialVersionUID = 438829612215550387L; public MInstance selectedInstance; public boolean isClearDeathSectionVisible = false; public NSMutableArray _appInstancesArray = null; public WOComponent refreshClicked() { return pageWithName("AppDetailPage"); } public boolean hasInstances() { NSArray instancesArray = mySession().mApplication.instanceArray(); if (instancesArray == null || instancesArray.count() == 0) return false; return true; } public boolean isRefreshEnabled() { NSArray instancesArray = mySession().mApplication.instanceArray(); if (instancesArray == null || instancesArray.count() == 0) return false; return theApplication.siteConfig().viewRefreshEnabled().booleanValue(); } public WOComponent configureApplicationClicked() { AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isNewInstanceSectionVisible = true; return aPage; } public WOComponent configureInstanceClicked() { mySession().mInstance = selectedInstance; InstConfigurePage aPage = (InstConfigurePage) pageWithName("InstConfigurePage"); return aPage; } public WOComponent deleteInstanceClicked() { mySession().mInstance = selectedInstance; InstConfirmDeletePage aPage = (InstConfirmDeletePage) pageWithName("InstConfirmDeletePage"); return aPage; } public String linkToWOStats() { String adaptorURL = theApplication.siteConfig().woAdaptor(); StringBuffer aURL = null; if (adaptorURL != null) { // using adaptor URL aURL = new StringBuffer(hrefToInst()); } else { // direct connect aURL = new StringBuffer(hrefToInstDirect()); aURL = aURL.append("/cgi-bin/WebObjects/"); aURL = aURL.append(mySession().mApplication.name()); aURL = aURL.append(".woa"); } aURL = aURL.append("/wa/WOStats"); return aURL.toString(); } public String _hrefToApp = null; public String hrefToApp() { if (_hrefToApp == null) { String adaptorURL = theApplication.siteConfig().woAdaptor(); if (adaptorURL == null) { adaptorURL = WOApplication.application().cgiAdaptorURL(); } if (adaptorURL.charAt(adaptorURL.length()-1) == '/') { _hrefToApp = adaptorURL + mySession().mApplication.name(); } else { _hrefToApp = adaptorURL + "/" + mySession().mApplication.name(); } } return _hrefToApp; } public String hrefToInst() { return hrefToApp() + ".woa/" + selectedInstance.id(); } public String hrefToInstDirect() { return "http://" + selectedInstance.hostName() + ":" + selectedInstance.port(); } /********** Deaths **********/ public boolean shouldDisplayDeathDetailLink() { if ( selectedInstance.deathCount() > 0) { return true; } return false; } public WOComponent instanceDeathDetailClicked() { mySession().mInstance = selectedInstance; AppDeathPage aPage = (AppDeathPage) pageWithName("AppDeathPage"); return aPage; } public WOComponent clearAllDeathsClicked() { theApplication._lock.startReading(); try { if (mySession().mApplication.hostArray().count() != 0) { sendCommandInstancesToWotaskds("CLEAR", mySession().mApplication.instanceArray(), mySession().mApplication.hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } /**********/ /********** Individual Controls **********/ public WOComponent startInstance() { if ( (selectedInstance.state == MObject.DEAD) || (selectedInstance.state == MObject.STOPPING) || (selectedInstance.state == MObject.CRASHING) || (selectedInstance.state == MObject.UNKNOWN) ) { sendCommandInstancesToWotaskds("START", new NSArray(selectedInstance), new NSArray(selectedInstance.host())); selectedInstance.state = MObject.STARTING; } return pageWithName("AppDetailPage"); } public WOComponent stopInstance() { if ( (selectedInstance.state == MObject.ALIVE) || (selectedInstance.state == MObject.STARTING) ) { sendCommandInstancesToWotaskds("STOP", new NSArray(selectedInstance), new NSArray(selectedInstance.host())); selectedInstance.state = MObject.STOPPING; } return pageWithName("AppDetailPage"); } public WOComponent toggleAutoRecover() { if ( (selectedInstance.autoRecover() != null) && (selectedInstance.autoRecover().booleanValue()) ) { selectedInstance.setAutoRecover(Boolean.FALSE); } else { selectedInstance.setAutoRecover(Boolean.TRUE); } theApplication._lock.startReading(); try { if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(new NSArray(selectedInstance), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent toggleRefuseNewSessions() { if (selectedInstance.isRefusingNewSessions) { selectedInstance.isRefusingNewSessions = false; sendCommandInstancesToWotaskds("ACCEPT", new NSArray(selectedInstance), new NSArray(selectedInstance.host())); } else { selectedInstance.isRefusingNewSessions = true; sendCommandInstancesToWotaskds("REFUSE", new NSArray(selectedInstance), new NSArray(selectedInstance.host())); } return pageWithName("AppDetailPage"); } public WOComponent toggleScheduling() { if ( (selectedInstance.schedulingEnabled() != null) && (selectedInstance.schedulingEnabled().booleanValue()) ) { selectedInstance.setSchedulingEnabled(Boolean.FALSE); } else { selectedInstance.setSchedulingEnabled(Boolean.TRUE); } theApplication._lock.startReading(); try { if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(new NSArray(selectedInstance), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } /**********/ /********** Group Controls **********/ public WOComponent startAllClicked() { theApplication._lock.startReading(); try { if (mySession().mApplication.hostArray().count() != 0) { sendCommandInstancesToWotaskds("START", mySession().mApplication.instanceArray(), mySession().mApplication.hostArray()); } NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); if (anInst.state != MObject.ALIVE) { anInst.state = MObject.STARTING; } } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent stopAllClicked() { return pageWithName("StopAllConfirmPage"); } public WOComponent autoRecoverEnableAllClicked() { theApplication._lock.startReading(); try { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.setAutoRecover(Boolean.TRUE); } if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(mySession().mApplication.instanceArray(), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent autoRecoverDisableAllClicked() { theApplication._lock.startReading(); try { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.setAutoRecover(Boolean.FALSE); } if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(mySession().mApplication.instanceArray(), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent acceptNewSessionsAllClicked() { theApplication._lock.startReading(); try { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.isRefusingNewSessions = false; } if (mySession().mApplication.hostArray().count() != 0) { sendCommandInstancesToWotaskds("ACCEPT", mySession().mApplication.instanceArray(), mySession().mApplication.hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent refuseNewSessionsAllClicked() { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.isRefusingNewSessions = true; } if (mySession().mApplication.hostArray().count() != 0) { sendCommandInstancesToWotaskds("REFUSE", mySession().mApplication.instanceArray(), mySession().mApplication.hostArray()); } return pageWithName("AppDetailPage"); } public WOComponent schedulingEnableAllClicked() { theApplication._lock.startReading(); try { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.setSchedulingEnabled(Boolean.TRUE); } if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(mySession().mApplication.instanceArray(), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } public WOComponent schedulingDisableAllClicked() { theApplication._lock.startReading(); try { NSArray instancesArray = mySession().mApplication.instanceArray(); for (int i = 0; i < instancesArray.count(); i++) { MInstance anInst = (MInstance) instancesArray.objectAtIndex(i); anInst.setSchedulingEnabled(Boolean.FALSE); } if (theApplication.siteConfig().hostArray().count() != 0) { sendUpdateInstancesToWotaskds(mySession().mApplication.instanceArray(), theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endReading(); } return pageWithName("AppDetailPage"); } /**********/ /********** Display Methods **********/ public String instanceStatusImage() { if (selectedInstance.state == MObject.DEAD) return "PowerSwitch_Off.gif"; else if (selectedInstance.state == MObject.ALIVE) return "PowerSwitch_On.gif"; else if (selectedInstance.state == MObject.STOPPING) return "Turning_Off.gif"; else if (selectedInstance.state == MObject.CRASHING) return "Turning_Off.gif"; else if (selectedInstance.state == MObject.STARTING) return "Turning_On.gif"; else return "PowerSwitch_Off.gif"; } public String instanceStatusImageText() { if (selectedInstance.state == MObject.DEAD) return "OFF"; else if (selectedInstance.state == MObject.ALIVE) return "ON"; else if (selectedInstance.state == MObject.STOPPING) return "STOPPING"; else if (selectedInstance.state == MObject.CRASHING) return "CRASHING"; else if (selectedInstance.state == MObject.STARTING) return "STARTING"; else return "UNKNOWN"; } public String autoRecoverImage() { if ( (selectedInstance.autoRecover() != null) && (selectedInstance.autoRecover().booleanValue()) ) { return "Panel_On_Green.gif"; } else { return "Panel_Off.gif"; } } public String autoRecoverImageText() { if ( (selectedInstance.autoRecover() != null) && (selectedInstance.autoRecover().booleanValue()) ) { return "AutoRecover ON"; } else { return "AutoRecover OFF"; } } public String refuseNewSessionsImage() { if ( (selectedInstance.schedulingEnabled() != null) && (selectedInstance.schedulingEnabled().booleanValue()) ) { if (selectedInstance.isRefusingNewSessions) { return "Panel_On_Yellow.gif"; } else { return "Panel_Off_Yellow.gif"; } } else { if (selectedInstance.isRefusingNewSessions) { return "Panel_On_Green.gif"; } else { return "Panel_Off.gif"; } } } public String refuseNewSessionsImageText() { if (selectedInstance.isRefusingNewSessions) { return "Refusing New Sessions"; } else { return "Accepting New Sessions"; } } public String schedulingImage() { if ( (selectedInstance.schedulingEnabled() != null) && (selectedInstance.schedulingEnabled().booleanValue()) ) { return "Panel_On_Green.gif"; } else { return "Panel_Off.gif"; } } public String schedulingImageText() { if ( (selectedInstance.schedulingEnabled() != null) && (selectedInstance.schedulingEnabled().booleanValue()) ) { return "Scheduling ON"; } else { return "Scheduling OFF"; } } public String nextShutdown() { if ( (selectedInstance.schedulingEnabled() != null) && (selectedInstance.schedulingEnabled().booleanValue()) ) { return selectedInstance.nextScheduledShutdownString(); } else { return "-"; } } /**********/ /********** Statistics Display **********/ public Integer totalTransactions() { return StatsUtilities.totalTransactionsForApplication(mySession().mApplication); } public Integer totalActiveSessions() { return StatsUtilities.totalActiveSessionsForApplication(mySession().mApplication); } public Float totalAverageTransaction() { return StatsUtilities.totalAverageTransactionForApplication(mySession().mApplication); } public Float totalAverageIdleTime() { return StatsUtilities.totalAverageIdleTimeForApplication(mySession().mApplication); } public Float actualRatePerSecond() { return StatsUtilities.actualTransactionsPerSecondForApplication(mySession().mApplication); } public Float actualRatePerMinute() { Float aNumber = StatsUtilities.actualTransactionsPerSecondForApplication(mySession().mApplication); return new Float((aNumber.floatValue() * 60)); } /**********/ // Start of Add Instance Stuff public MHost aHost; public MHost selectedHost; public int numberToAdd = 1; public WOComponent hostsPageClicked() { return pageWithName("HostsPage"); } public WOComponent addInstanceClicked() { if (numberToAdd < 1) return pageWithName("AppDetailPage"); theApplication._lock.startWriting(); try { NSMutableArray newInstanceArray = new NSMutableArray(numberToAdd); for (int i = 0; i < numberToAdd; i++ ) { Integer aUniqueID = mySession().mApplication.nextID(); MInstance newInstance = new MInstance(selectedHost, mySession().mApplication, aUniqueID, theApplication.siteConfig()); theApplication.siteConfig().addInstance_M(newInstance); newInstanceArray.addObject(newInstance); } if (theApplication.siteConfig().hostArray().count() != 0) { sendAddInstancesToWotaskds(newInstanceArray, theApplication.siteConfig().hostArray()); } } finally { theApplication._lock.endWriting(); } return pageWithName("AppDetailPage"); } public boolean hasHosts() { theApplication._lock.startReading(); try { NSArray hosts = theApplication.siteConfig().hostArray(); return (hosts != null && (hosts.count() > 0)); } finally { theApplication._lock.endReading(); } } } --- NEW FILE: Application.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import java.util.Enumeration; import com.webobjects.appserver.WOApplication; import com.webobjects.foundation.NSLog; import com.webobjects.foundation._NSCollectionReaderWriterLock; import com.webobjects.monitor._private.MSiteConfig; public class Application extends WOApplication { public MSiteConfig _siteConfig; public _NSCollectionReaderWriterLock _lock; static public void main(String argv[]) { WOApplication.main(argv, Application.class); } public Application() { super(); _lock = new _NSCollectionReaderWriterLock(); String dd = System.getProperties().getProperty("_DeploymentDebugging"); if (dd != null) { NSLog.debug.setIsVerbose(true); NSLog.out.setIsVerbose(true); NSLog.err.setIsVerbose(true); NSLog.allowDebugLoggingForGroups(NSLog.DebugGroupDeployment); NSLog.debug.setAllowedDebugLevel(NSLog.DebugLevelDetailed); } _siteConfig = MSiteConfig.unarchiveSiteConfig(false); if (_siteConfig == null) { NSLog.err.appendln("The Site Configuration could not be loaded from the local filesystem"); System.exit(1); } for (Enumeration e = _siteConfig.hostArray().objectEnumerator(); e.hasMoreElements(); ) { _siteConfig.hostErrorArray.addObjectIfAbsent(e.nextElement()); } if (_siteConfig.localHost() != null) _siteConfig.hostErrorArray.removeObject(_siteConfig.localHost()); } public void setSiteConfig(MSiteConfig aConfig) { _siteConfig = aConfig; } public MSiteConfig siteConfig() { return _siteConfig; } } --- NEW FILE: ApplicationsPage.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import com.webobjects.appserver.WOComponent; import com.webobjects.monitor._private.MApplication; import com.webobjects.monitor._private.String_Extensions; public class ApplicationsPage extends MonitorComponent { /** * serialVersionUID */ private static final long serialVersionUID = -2523319756655905750L; public MApplication currentApplication; public String newApplicationName; public String hrefToApp() { String aURL = theApplication.siteConfig().woAdaptor(); if (aURL != null) { aURL = aURL + "/" + currentApplication.name(); } return aURL; } public WOComponent appDetailsClicked() { mySession().mApplication = currentApplication; return pageWithName("AppDetailPage"); } public WOComponent addApplicationClicked() { if (String_Extensions.isValidXMLString(newApplicationName)) { theApplication._lock.startReading(); try { if (theApplication.siteConfig().applicationWithName(newApplicationName) == null) { MApplication newApplication = new MApplication(newApplicationName, theApplication.siteConfig()); theApplication.siteConfig().addApplication_M(newApplication); if (theApplication.siteConfig().hostArray().count() != 0) { sendAddApplicationToWotaskds(newApplication, theApplication.siteConfig().hostArray()); } mySession().mApplication = newApplication; AppConfigurePage aPage = (AppConfigurePage)pageWithName("AppConfigurePage"); aPage.isNewInstanceSectionVisible = true; // endReading in the finally block below return aPage; } } finally { theApplication._lock.endReading(); } } newApplicationName = null; return pageWithName("ApplicationsPage"); } public WOComponent deleteClicked() { mySession().mApplication = currentApplication; return pageWithName("AppConfirmDeletePage"); } public WOComponent configureClicked() { mySession().mApplication = currentApplication; AppConfigurePage aPage = (AppConfigurePage) pageWithName("AppConfigurePage"); aPage.isNewInstanceSectionVisible = true; return aPage; } public boolean logoutRequired() { if (theApplication.siteConfig() == null) { return false; } else { return (mySession().isLoggedIn() && theApplication.siteConfig().isPasswordRequired()); } } public WOComponent logoutClicked() { mySession().setIsLoggedIn(false); return pageWithName("Main"); } } --- NEW FILE: ConfigurePage.java --- package com.webobjects.monitor.application; /* © Copyright 2006- 2007 Apple Computer, Inc. All rights reserved. IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. (ÒAppleÓ) in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in this original Apple software (the ÒApple SoftwareÓ), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING,... [truncated message content] |