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    }