001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package javax.jbi.management;
018    
019    import javax.management.ObjectName;
020    
021    /**
022     * The InstallerMBean defines standard installation and uninstallation controls
023     * for components. InstallerMBeans are created by the
024     * {@link InstallationServiceMBean}. The InstallerMBean offers controls to
025     * allow an administrative tool to:
026     * <ul>
027     *   <li>Install the component from the installation package.</li>
028     *   <li>Uninstall the component.</li>
029     *   <li>Check the installation status of the component.</li>
030     *   <li>Get the file path to the component's installation root directory.</li>
031     * </ul>
032     *
033     * @author JSR208 Expert Group
034     */
035    public interface InstallerMBean {
036    
037        /**
038         * Get the installation root directory path for this component.
039         *
040         * @return the full installation path of this component; this must be in
041         *         absolute path name form, in platform-specific format; must be
042         *         non-null and non-empty
043         */
044        String getInstallRoot();
045    
046        /**
047         * Install a component.
048         * <p>
049         * Note that the implementation must leave the component in its
050         * installed, shutdown state. Automatic starting of components during
051         * installation by implementations is not allowed.
052         *
053         * @return JMX ObjectName representing the LifeCycleMBean for the installed
054         *         component, or <code>null</code> if the installation did not
055         *         complete
056         * @exception javax.jbi.JBIException if the installation fails
057         */
058        ObjectName install() throws javax.jbi.JBIException;
059    
060        /**
061         * Determine whether or not the component is installed.
062         *
063         * @return <code>true</code> if this component is currently installed,
064         *         otherwise <code>false</code>
065         */
066        boolean isInstalled();
067    
068        /**
069         * Uninstall the component. This completely removes the component from the
070         * JBI system.
071         *
072         * @exception javax.jbi.JBIException if the uninstallation fails
073         */
074        void uninstall() throws javax.jbi.JBIException;
075    
076        /**
077         * Get the installer configuration MBean name for this component.
078         *
079         * @return the MBean object name of the Installer Configuration MBean;
080         *         <code>null</code> if none is provided by this component
081         * @exception javax.jbi.JBIException if the component is not in the
082         *            appropriate state (after install() but before life cycle
083         *            initialization), or if any error occurs during processing
084         */
085        ObjectName getInstallerConfigurationMBean() throws javax.jbi.JBIException;
086    
087    }