This project has retired. For details please refer to its
Attic page.
001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.oozie.action;
019
020 import org.apache.oozie.util.ParamChecker;
021 import org.apache.oozie.util.XLog;
022
023 /**
024 * ActionExecutor exception. <p/> The exception provides information regarding the transient/no-transient/fatal nature
025 * of the exception.
026 */
027 public class ActionExecutorException extends Exception {
028
029 /**
030 * Enum that defines the type of error an {@link ActionExecutor} has produced.
031 */
032 public static enum ErrorType {
033
034 /**
035 * The action will be automatically retried by Oozie.
036 */
037 TRANSIENT,
038
039 /**
040 * The job in set in SUSPEND mode and it will wait for an admin to resume the job.
041 */
042
043 NON_TRANSIENT,
044
045 /**
046 * The action completes with an error transition.
047 */
048 ERROR,
049
050 /**
051 * The action fails. No transition is taken.
052 */
053 FAILED
054 }
055
056 private ErrorType errorType;
057 private String errorCode;
058
059 /**
060 * Create an action executor exception.
061 *
062 * @param errorType the error type.
063 * @param errorCode the error code.
064 * @param message the error message.
065 */
066 public ActionExecutorException(ErrorType errorType, String errorCode, String message) {
067 super(message);
068 this.errorType = ParamChecker.notNull(errorType, "errorType");
069 this.errorCode = ParamChecker.notEmpty(errorCode, "errorCode");
070 }
071
072 /**
073 * Create an action executor exception.
074 *
075 * <p/> If the last parameter is an Exception it is used as the exception cause.
076 *
077 * @param errorType the error type.
078 * @param errorCode the error code.
079 * @param messageTemplate the error message.
080 * @param params parameters used to create the exception message together with the messageTemplate. If the last
081 * parameter is an Exception it is used as the exception cause.
082 */
083 public ActionExecutorException(ErrorType errorType, String errorCode, String messageTemplate, Object... params) {
084 super(errorCode + ": " + XLog.format(messageTemplate, params), XLog.getCause(params));
085 this.errorType = ParamChecker.notNull(errorType, "errorType");
086 this.errorCode = ParamChecker.notEmpty(errorCode, "errorCode");
087 }
088
089 /**
090 * Return the error type of the exception.
091 *
092 * @return the error type of the exception.
093 */
094 public ErrorType getErrorType() {
095 return errorType;
096 }
097
098 /**
099 * Return the error code of the exception.
100 *
101 * @return the error code of the exception.
102 */
103 public String getErrorCode() {
104 return errorCode;
105 }
106 }