/******************************************************************************* * Copyright (c) 2006-2010 eBay Inc. 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 *******************************************************************************/ package org.ebayopensource.turmeric.runtime.tests.service1.sample.errors; import java.util.List; import org.ebayopensource.turmeric.runtime.sif.pipeline.ErrorResponseAdapter; import org.ebayopensource.turmeric.runtime.tests.service1.sample.types1.CustomErrorMessage; import org.ebayopensource.turmeric.runtime.tests.service1.sample.types1.MyMessage; /** * @author ichernyshev */ public class CustomErrorResponseAdapterImpl implements ErrorResponseAdapter { public void init(InitContext ctx) { } public String getErrorText(Object errorResponse) { List<ErrorType> errorTypes = getErrorTypes(errorResponse); if (errorTypes == null || errorTypes.isEmpty()) { return null; } return errorTypes.get(0).getLongMessage(); } public String getExceptionClassName(Object errorResponse) { ErrorType errorType = getApplicationError(errorResponse); if (errorType == null) { return null; } List<ErrorParameterType> params = errorType.getErrorParameters(); if (params != null && !params.isEmpty()) { ErrorParameterType param = params.get(params.size()-1); if (param.getParamID().equals("Exception")) { return param.getValue(); } } return null; } public Long getErrorId(Object errorResponse) { List<ErrorType> errorTypes = getErrorTypes(errorResponse); if (errorTypes == null || errorTypes.isEmpty()) { return null; } String errorCode = errorTypes.get(0).getErrorCode(); if (errorCode == null) { return null; } return Long.parseLong(errorCode); } public Boolean hasSystemErrors(Object errorResponse) { List<ErrorType> errorTypes = getErrorTypes(errorResponse); if (errorTypes == null || errorTypes.isEmpty()) { return null; } // try to find first application error for (ErrorType errorData: errorTypes) { if (errorData == null) { continue; } ErrorClassificationCodeType classification = errorData.getErrorClassification(); if (classification == null) { continue; } if (classification.equals(ErrorClassificationCodeType.SYSTEM_ERROR)) { return Boolean.TRUE; } } return Boolean.FALSE; } private List<ErrorType> getErrorTypes(Object errorResponse) { if (errorResponse instanceof CustomErrorMessage) { CustomErrorMessage customErrorMessage = (CustomErrorMessage) errorResponse; return customErrorMessage.getError(); } if (errorResponse instanceof MyMessage) { MyMessage msg = (MyMessage) errorResponse; return msg.getError(); } return null; } private ErrorType getApplicationError(Object errorResponse) { List<ErrorType> errorTypes = getErrorTypes(errorResponse); if (errorTypes == null || errorTypes.isEmpty()) { return null; } // try to find first application error for (ErrorType errorData: errorTypes) { if (errorData == null) { continue; } ErrorClassificationCodeType classification = errorData.getErrorClassification(); if (classification == null) { continue; } if (!classification.equals(ErrorClassificationCodeType.REQUEST_ERROR) && !classification.equals(ErrorClassificationCodeType.SYSTEM_ERROR)) { return errorData; } } return null; } }