| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.karaf.system; |
| |
| /** |
| * Describe a system service |
| */ |
| public interface SystemService { |
| |
| /** |
| * Types defining what to remove on a restart of Karaf |
| */ |
| public enum Swipe { |
| /** Delete nothing; simple restart */ |
| NONE, |
| /** Delete only the cache; everything else remains */ |
| CACHE, |
| /** Forces a clean restart by removing the working directory; this option is compatible to the former clean method. */ |
| ALL |
| } |
| |
| /** |
| * Halt the Karaf container. |
| * |
| * @throws Exception If the halt fails. |
| */ |
| void halt() throws Exception; |
| |
| /** |
| * Halt the Karaf container. |
| * |
| * @param time Shutdown delay. The time argument can have different formats. |
| * First, it can be an absolute time in the format hh:mm, in which hh is the hour (1 or 2 digits) and mm |
| * is the minute of the hour (in two digits). Second, it can be in the format +m, in which m is the number of minutes |
| * to wait. The word now is an alias for +0. |
| * @throws Exception If the halt fails. |
| */ |
| void halt(String time) throws Exception; |
| |
| /** |
| * Reboot the Karaf container. |
| * |
| * @throws Exception If the reboot fails. |
| */ |
| void reboot() throws Exception; |
| |
| /** |
| * Reboot the Karaf container. |
| * |
| * @param time The reboot delay. The time argument can have different formats. |
| * First, it can be an absolute time in the format hh:mm, in which hh is the hour (1 or 2 digits) and mm |
| * is the minute of the hour (in two digits). Second, it can be in the format +m, in which m is the number of minutes |
| * to wait. The word now is an alias for +0. |
| * @param clean Force a clean restart by deleting the working directory. |
| * @throws Exception If the reboot fails. |
| */ |
| void reboot(String time, Swipe clean) throws Exception; |
| |
| /** |
| * Set the system start level. |
| * |
| * @param startLevel The new system start level. |
| * @throws Exception If setting the start level fails. |
| */ |
| void setStartLevel(int startLevel) throws Exception; |
| |
| /** |
| * Get the system start level. |
| * |
| * @return The current system start level. |
| * @throws Exception If an error occurs while retrieving the start level. |
| */ |
| int getStartLevel() throws Exception; |
| |
| /** |
| * Get the version of the current Karaf instance. |
| * |
| * @return The instance version. |
| */ |
| String getVersion(); |
| |
| /** |
| * Get the name of the current Karaf instance. |
| * |
| * @return The instance name. |
| */ |
| String getName(); |
| |
| /** |
| * Set the name of the Karaf instance. |
| * |
| * @param name The new instance name. |
| */ |
| void setName(String name); |
| |
| /** |
| * Get the current OSGi framework in use. |
| * |
| * @return The {@link FrameworkType} representing the OSGi framework in use. |
| */ |
| FrameworkType getFramework(); |
| |
| /** |
| * Change OSGi framework to use. |
| * |
| * @param framework The new OSGi framework to use. |
| */ |
| void setFramework(FrameworkType framework); |
| |
| /** |
| * Enable or disable debugging. |
| * |
| * @param debug True to enable debugging, false else. |
| */ |
| void setFrameworkDebug(boolean debug); |
| |
| /** |
| * Set a system property and persist to etc/system.properties. |
| * |
| * @param key The system property key. |
| * @param value The system property value. |
| * @param persist True to persist the change in Karaf etc configuration file, false else. |
| * @return The system property value as set. |
| */ |
| String setSystemProperty(String key, String value, boolean persist); |
| } |