/* * Copyright 2016 by PrimeCloud Controller/OSS Community. * * This file is part of PrimeCloud Controller(TM). * * PrimeCloud Controller(TM) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * PrimeCloud Controller(TM) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PrimeCloud Controller(TM). If not, see <http://www.gnu.org/licenses/>. */ package jp.primecloud.auto.aws.wrapper; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import jp.primecloud.auto.exception.AutoException; import jp.primecloud.auto.util.StringUtils; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.ec2.model.RunInstancesRequest; /** * <p> * TODO: クラスコメント * </p> * */ public class ExceptionHandleAwsClientWrapper extends AbstractAwsClientWrapper { /** * {@inheritDoc} */ protected Object doInvoke(Object target, Object proxy, Method method, Object[] args) throws Throwable { try { return method.invoke(target, args); } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof AmazonServiceException) { throw handleException((AmazonServiceException) targetException, method, args); } else if (targetException instanceof AmazonClientException) { throw handleException((AmazonClientException) targetException, method, args); } else { throw targetException; } } } protected AutoException handleException(AmazonServiceException exception, Method method, Object[] args) { Object request = null; if (method.getParameterTypes().length > 0) { request = args[0]; } // UserDataにはパスワードが含まれているためマスクする if (request instanceof RunInstancesRequest) { ((RunInstancesRequest) request).setUserData(null); } String str = StringUtils.reflectToString(request); return new AutoException("EAWS-000003", exception, method.getName(), exception.getErrorCode(), exception.getMessage(), str); } protected AutoException handleException(AmazonClientException exception, Method method, Object[] args) { Object request = null; if (method.getParameterTypes().length > 0) { request = args[0]; } // UserDataにはパスワードが含まれているためマスクする if (request instanceof RunInstancesRequest) { ((RunInstancesRequest) request).setUserData(null); } String str = StringUtils.reflectToString(request); return new AutoException("EAWS-000001", exception, method.getName(), str); } }