001 package org.picocontainer.web.chain.divertor;
002
003 import java.util.Map;
004
005 import org.picocontainer.PicoLifecycleException;
006 import org.picocontainer.web.chain.Divertor;
007
008 /**
009 * divertor based on maps. uses FQCN as key, values shall be strings
010 *
011 * @author k.pribluda
012 */
013 public class MapDivertor implements Divertor {
014
015 Map diversions;
016
017 public MapDivertor(Map diversions) {
018 super();
019 this.diversions = diversions;
020 }
021 /**
022 * recursively extract original cause from pico lifecycle exception
023 *
024 */
025 public String divert(Throwable cause) {
026 if(cause instanceof PicoLifecycleException) {
027 return divert(cause.getCause());
028 }
029 return (String) getDiversions().get(cause.getClass().getName());
030 }
031
032 public Map getDiversions() {
033 return diversions;
034 }
035
036 public void setDiversions(Map diversions) {
037 this.diversions = diversions;
038 }
039
040 }