/*******************************************************************************
* 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.common.exceptions.ServiceException;
import org.ebayopensource.turmeric.runtime.spf.impl.pipeline.DefaultErrorMapperImpl;
import org.ebayopensource.turmeric.runtime.spf.pipeline.ServerMessageContext;
import org.ebayopensource.turmeric.runtime.tests.service1.sample.Test1Constants;
import org.ebayopensource.turmeric.runtime.tests.service1.sample.types1.CustomErrorMessage;
import org.ebayopensource.turmeric.runtime.tests.service1.sample.types1.MyMessage;
import org.ebayopensource.turmeric.runtime.tests.service1.sample.util.TestUtils;
import org.ebayopensource.turmeric.common.v1.types.ErrorMessage;
/**
* @author wdeng
*/
public class TestServerErrorMapper extends DefaultErrorMapperImpl {
public void init(InitContext ctx) throws ServiceException {
super.init(ctx);
}
public Object mapErrors(List<Throwable> errors, ServerMessageContext ctx) throws ServiceException
{
if (ctx.getRequestMessage().hasTransportHeader(Test1Constants.TR_HDR_ERROR_MAPPER_EXCEPTION)) {
throw new RuntimeException("Test error mapper exception");
}
ErrorMessage errorMessage = (ErrorMessage) super.mapErrors(errors, ctx);
if (ctx.getOperationName().equals("customError1")) {
List<ErrorType> errorTypeList = TestUtils.errorMessageToErrorTypeList(errorMessage);
CustomErrorMessage customMessage = new CustomErrorMessage();
customMessage.getError().addAll(errorTypeList);
return customMessage;
} else if (ctx.getOperationName().equals("customError2")) {
List<ErrorType> errorTypeList2 = TestUtils.errorMessageToErrorTypeList(errorMessage);
MyMessage result = new MyMessage();
result.getError().addAll(errorTypeList2);
return result;
}
return errorMessage;
}
}