001: /*
002: * BEGIN_HEADER - DO NOT EDIT
003: *
004: * The contents of this file are subject to the terms
005: * of the Common Development and Distribution License
006: * (the "License"). You may not use this file except
007: * in compliance with the License.
008: *
009: * You can obtain a copy of the license at
010: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
011: * See the License for the specific language governing
012: * permissions and limitations under the License.
013: *
014: * When distributing Covered Code, include this CDDL
015: * HEADER in each file and include the License file at
016: * https://open-esb.dev.java.net/public/CDDLv1.0.html.
017: * If applicable add the following below this CDDL HEADER,
018: * with the fields enclosed by brackets "[]" replaced with
019: * your own identifying information: Portions Copyright
020: * [year] [name of copyright owner]
021: */
022:
023: /*
024: * @(#)ComponentInstaller.java
025: * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved.
026: *
027: * END_HEADER - DO NOT EDIT
028: */
029: package com.sun.jbi.framework;
030:
031: import com.sun.jbi.ComponentState;
032: import com.sun.jbi.component.InstallationContext;
033: import com.sun.jbi.management.InstallerMBean;
034: import javax.management.ObjectName;
035:
036: /**
037: * This class implements the InstallerMBean for a Component (BC or SE).
038: * This MBean acts as an agent between the JMX management service and the
039: * Component Framework to allow the Installer Service to control the
040: * installation of the component.
041: *
042: * @author Sun Microsystems, Inc.
043: */
044: public class ComponentInstaller implements InstallerMBean {
045: /**
046: * ComponentFramework handle.
047: */
048: private ComponentFramework mComponentFramework;
049:
050: /**
051: * ComponentRegistry handle.
052: */
053: private ComponentRegistry mComponentRegistry;
054:
055: /**
056: * InstallationContext handle.
057: */
058: private InstallationContext mInstallContext;
059:
060: /**
061: * Constructor.
062: * @param installContext - the installation context for this component.
063: * @param componentFramework - the ComponentFramework handle.
064: * @param componentRegistry - the ComponentRegistry handle.
065: */
066: ComponentInstaller(InstallationContext installContext,
067: ComponentFramework componentFramework,
068: ComponentRegistry componentRegistry) {
069: mInstallContext = installContext;
070: mComponentFramework = componentFramework;
071: mComponentRegistry = componentRegistry;
072: }
073:
074: /**
075: * Get the installer configuration MBean name for this component.
076: * @return the MBean object name of the Installer Configuration MBean.
077: * @throws javax.jbi.JBIException if the component is not in the LOADED
078: * state or any error occurs during processing.
079: */
080: public ObjectName getInstallerConfigurationMBean()
081: throws javax.jbi.JBIException {
082: return mComponentFramework
083: .getInstallerConfigurationMBeanName(mInstallContext
084: .getComponentName());
085: }
086:
087: /**
088: * Get the installation root directory path for this component.
089: * @return the full installation path of this component.
090: */
091: public String getInstallRoot() {
092: return mInstallContext.getInstallRoot();
093: }
094:
095: /**
096: * Install this component.
097: * @return JMX ObjectName representing the ComponentLifeCycleMBean for this
098: * component.
099: * @throws javax.jbi.JBIException if the installation fails.
100: */
101: public ObjectName install() throws javax.jbi.JBIException {
102: return mComponentFramework.installComponent(mInstallContext);
103: }
104:
105: /**
106: * Determine whether or not this component is installed.
107: * @return true if this component is currently installed, false if not.
108: */
109: public boolean isInstalled() {
110: ComponentState s;
111: try {
112: s = mComponentRegistry.getStatus(mInstallContext
113: .getComponentName());
114: } catch (javax.jbi.JBIException ex) {
115: return false;
116: }
117: if (s == ComponentState.LOADED) {
118: return false;
119: }
120: return true;
121: }
122:
123: /**
124: * Uninstall this component. This completely removes the component from the
125: * JBI system.
126: * @throws javax.jbi.JBIException if the uninstallation fails.
127: */
128: public void uninstall() throws javax.jbi.JBIException {
129: uninstall(false);
130: }
131:
132: /**
133: * Uninstall this component. This completely removes the component from the
134: * JBI system. If the <code>force</code> flag is set to <code>true</code>,
135: * the uninstall proceeds regardless of any exception thrown by the
136: * component.
137: *
138: * @param force set to <code>true</code> to uninstall even if errors occur.
139: * @throws javax.jbi.JBIException if the uninstallation fails.
140: */
141: public void uninstall(boolean force) throws javax.jbi.JBIException {
142: mComponentFramework.uninstallComponent(mInstallContext, force);
143: }
144: }
|