blob: 166bf850e4f91d01101d54f062de585148bab795 [file] [log] [blame]
/*
* 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;
}
}