package org.agnitas.emm.springws.exceptionresolver; import java.util.Locale; import org.agnitas.emm.core.binding.service.BindingNotExistException; import org.agnitas.emm.core.dyncontent.service.DynamicTagContentNotExistException; import org.agnitas.emm.core.dyncontent.service.DynamicTagContentWithSameOrderAlreadyExist; import org.agnitas.emm.core.dyncontent.service.DynamicTagContentWithSameTargetIdAlreadyExist; import org.agnitas.emm.core.dynname.service.DynamicTagNameNotExistException; import org.agnitas.emm.core.mailing.service.MailingNotExistException; import org.agnitas.emm.core.mailing.service.SendDateNotInFutureException; import org.agnitas.emm.core.mailing.service.TemplateNotExistException; import org.agnitas.emm.core.mailing.service.WorldMailingAlreadySentException; import org.agnitas.emm.core.mailinglist.service.MailinglistNotExistException; import org.agnitas.emm.core.recipient.service.RecipientNotExistException; import org.agnitas.emm.core.target.service.TargetNotExistException; import org.apache.log4j.Logger; import org.springframework.ws.soap.server.endpoint.AbstractSoapFaultDefinitionExceptionResolver; import org.springframework.ws.soap.server.endpoint.SoapFaultDefinition; public class CommonExceptionResolver extends AbstractSoapFaultDefinitionExceptionResolver { private final static Logger logger = Logger.getLogger(CommonExceptionResolver.class); protected SoapFaultDefinition getDefaultDefinition(Exception ex) { logger.error("Exception", ex); SoapFaultDefinition definition = new SoapFaultDefinition(); definition.setLocale(Locale.getDefault()); definition.setFaultCode(SoapFaultDefinition.SERVER); definition.setFaultStringOrReason(ex.getMessage()); return definition; } @Override protected SoapFaultDefinition getFaultDefinition(Object endpoint, Exception ex) { SoapFaultDefinition definition = getDefaultDefinition(ex); if (ex instanceof IllegalArgumentException) { definition.setFaultCode(SoapFaultDefinition.CLIENT); } else if (ex instanceof org.springframework.dao.IncorrectResultSizeDataAccessException) { } else if (ex instanceof org.springframework.dao.DataAccessException) { definition.setFaultStringOrReason("Data access error"); } else if (ex instanceof MailingNotExistException) { definition.setFaultStringOrReason("Unknown mailing ID"); } else if (ex instanceof DynamicTagContentNotExistException) { definition.setFaultStringOrReason("Unknown content ID"); } else if (ex instanceof DynamicTagNameNotExistException) { definition.setFaultStringOrReason("Unknown block name"); } else if (ex instanceof TargetNotExistException) { definition.setFaultStringOrReason("Unknown target id (" + ((TargetNotExistException)ex).getTargetID() + ")"); } else if (ex instanceof MailinglistNotExistException) { definition.setFaultStringOrReason("Unknown mailinglist ID"); } else if (ex instanceof TemplateNotExistException) { definition.setFaultStringOrReason("Unknown template ID"); } else if (ex instanceof DynamicTagContentWithSameOrderAlreadyExist) { definition.setFaultStringOrReason("Content with the same order already exist"); } else if (ex instanceof DynamicTagContentWithSameTargetIdAlreadyExist) { definition.setFaultStringOrReason("Content with the same target id already exist"); } else if (ex instanceof RecipientNotExistException) { definition.setFaultStringOrReason("Unknown customer ID"); } else if (ex instanceof BindingNotExistException) { definition.setFaultStringOrReason("Binding not exist"); } else if (ex instanceof SendDateNotInFutureException) { definition.setFaultStringOrReason("Send date not in future"); } else if (ex instanceof WorldMailingAlreadySentException) { definition.setFaultStringOrReason("World mailing already sent"); } else { definition.setFaultStringOrReason("Unknown error"); } return definition; } }