All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.snapscript.core.stack.OriginTraceExtractor Maven / Gradle / Ivy

package org.snapscript.core.stack;

import static org.snapscript.core.Reserved.IMPORT_JAVA;
import static org.snapscript.core.Reserved.IMPORT_SNAPSCRIPT;

import java.util.ArrayList;
import java.util.List;

public class OriginTraceExtractor {
   
   public static final int DEFAULT_DEPTH = 0;
   public static final int DEBUG_DEPTH = 2; 

   private final int depth;
   
   public OriginTraceExtractor() {
      this(DEFAULT_DEPTH);
   }
   
   public OriginTraceExtractor(int depth) {
      this.depth = depth;
   }

   public List extract(Throwable cause) {
      List list = new ArrayList();
   
      if(cause != null) {
         StackTraceElement[] elements = cause.getStackTrace();
         
         for(int i = 0; i < depth; i++) {
            StackTraceElement element = elements[i];
            String source = element.getClassName();
            
            if(source.startsWith(IMPORT_SNAPSCRIPT)) { 
               list.add(element);
            } else if(source.startsWith(IMPORT_JAVA)) {
               list.add(element);
            } else {
               return list;
            }
         } 
      }
      return list;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy