org.broadleafcommerce.core.workflow.DefaultErrorHandler Maven / Gradle / Ivy
/*
* #%L
* BroadleafCommerce Framework
* %%
* Copyright (C) 2009 - 2013 Broadleaf Commerce
* %%
* 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
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package org.broadleafcommerce.core.workflow;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component("blDefaultErrorHandler")
public class DefaultErrorHandler implements ErrorHandler {
private static final Log LOG = LogFactory.getLog(DefaultErrorHandler.class);
@SuppressWarnings("unused")
private String name;
protected List unloggedExceptionClasses = new ArrayList();
/* (non-Javadoc)
* @see org.broadleafcommerce.core.workflow.ErrorHandler#handleError(org.broadleafcommerce.core.workflow.ProcessContext, java.lang.Throwable)
*/
public void handleError(ProcessContext context, Throwable th) throws WorkflowException {
context.stopProcess();
boolean shouldLog = true;
Throwable cause = th;
while (true) {
if (unloggedExceptionClasses.contains(cause.getClass().getName())) {
shouldLog = false;
break;
}
cause = cause.getCause();
if (cause == null) {
break;
}
}
if (shouldLog) {
LOG.error("An error occurred during the workflow", th);
}
throw new WorkflowException(th);
}
/* (non-Javadoc)
* @see org.springframework.beans.factory.BeanNameAware#setBeanName(java.lang.String)
*/
public void setBeanName(String name) {
this.name = name;
}
public List getUnloggedExceptionClasses() {
return unloggedExceptionClasses;
}
public void setUnloggedExceptionClasses(List unloggedExceptionClasses) {
this.unloggedExceptionClasses = unloggedExceptionClasses;
}
}