| /* |
| * Copyright (c) OSGi Alliance (2005, 2010). All Rights Reserved. |
| * |
| * Licensed 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.osgi.service.application; |
| |
| /** |
| * This exception is used to indicate problems related to application lifecycle |
| * management. |
| * |
| * {@code ApplicationException} object is created by the Application Admin |
| * to denote an exception condition in the lifecycle of an application. |
| * {@code ApplicationException}s should not be created by developers. <br/> |
| * {@code ApplicationException}s are associated with an error code. This |
| * code describes the type of problem reported in this exception. The possible |
| * codes are: |
| * <ul> |
| * <li> {@link #APPLICATION_LOCKED} - The application couldn't be launched |
| * because it is locked.</li> |
| * <li> {@link #APPLICATION_NOT_LAUNCHABLE} - The application is not in |
| * launchable state.</li> |
| * <li> {@link #APPLICATION_INTERNAL_ERROR} - An exception was thrown by the |
| * application or its container during launch.</li> |
| * <li> {@link #APPLICATION_SCHEDULING_FAILED} - The scheduling of an application |
| * failed. |
| * <li> {@link #APPLICATION_DUPLICATE_SCHEDULE_ID} - The application scheduling |
| * failed because the specified identifier is already in use. |
| * <li> {@link #APPLICATION_EXITVALUE_NOT_AVAILABLE} - The exit value is not |
| * available for an application instance because the instance has not |
| * terminated. |
| * <li> {@link #APPLICATION_INVALID_STARTUP_ARGUMENT} - One of the specified |
| * startup arguments is invalid, for example its type is not permitted. |
| * </ul> |
| * |
| * @version $Id$ |
| */ |
| public class ApplicationException extends Exception { |
| private static final long serialVersionUID = -7173190453622508207L; |
| private final int errorCode; |
| |
| /** |
| * The application couldn't be launched because it is locked. |
| */ |
| public static final int APPLICATION_LOCKED = 0x01; |
| |
| /** |
| * The application is not in launchable state, it's |
| * {@link ApplicationDescriptor#APPLICATION_LAUNCHABLE} |
| * attribute is false. |
| */ |
| public static final int APPLICATION_NOT_LAUNCHABLE = 0x02; |
| |
| /** |
| * An exception was thrown by the application or the corresponding container |
| * during launch. The exception is available from {@code getCause()}. |
| */ |
| public static final int APPLICATION_INTERNAL_ERROR = 0x03; |
| |
| /** |
| * The application schedule could not be created due to some internal error |
| * (for example, the schedule information couldn't be saved due to some |
| * storage error). |
| */ |
| public static final int APPLICATION_SCHEDULING_FAILED = 0x04; |
| |
| /** |
| * The application scheduling failed because the specified identifier |
| * is already in use. |
| */ |
| public static final int APPLICATION_DUPLICATE_SCHEDULE_ID = 0x05; |
| |
| /** |
| * The exit value is not available for an application instance because the |
| * instance has not terminated. |
| * |
| * @since 1.1 |
| */ |
| public static final int APPLICATION_EXITVALUE_NOT_AVAILABLE = 0x06; |
| |
| /** |
| * One of the specified startup arguments is invalid, for example its |
| * type is not permitted. |
| * |
| * @since 1.1 |
| */ |
| public static final int APPLICATION_INVALID_STARTUP_ARGUMENT = 0x07; |
| |
| /** |
| * Creates an {@code ApplicationException} with the specified error code. |
| * @param errorCode The code of the error |
| */ |
| public ApplicationException(int errorCode) { |
| super(); |
| this.errorCode = errorCode; |
| } |
| |
| /** |
| * Creates a {@code ApplicationException} that wraps another exception. |
| * |
| * @param errorCode The code of the error |
| * @param cause The cause of this exception. |
| */ |
| public ApplicationException(int errorCode, Throwable cause) { |
| super(cause); |
| this.errorCode = errorCode; |
| } |
| |
| /** |
| * Creates an {@code ApplicationException} with the specified error code. |
| * @param errorCode The code of the error |
| * @param message The associated message |
| */ |
| public ApplicationException(int errorCode, String message) { |
| super(message); |
| this.errorCode = errorCode; |
| } |
| |
| /** |
| * Creates a {@code ApplicationException} that wraps another exception. |
| * |
| * @param errorCode The code of the error |
| * @param message The associated message. |
| * @param cause The cause of this exception. |
| */ |
| public ApplicationException(int errorCode, String message, Throwable cause) { |
| super(message, cause); |
| this.errorCode = errorCode; |
| } |
| |
| /** |
| * Returns the cause of this exception or {@code null} if no cause was |
| * set. |
| * |
| * @return The cause of this exception or {@code null} if no cause was |
| * set. |
| */ |
| @Override |
| public Throwable getCause() { |
| return super.getCause(); |
| } |
| |
| /** |
| * Returns the error code associated with this exception. |
| * |
| * @return The error code of this exception. |
| */ |
| public int getErrorCode() { |
| return errorCode; |
| } |
| } |