Package railo.intergral.fusiondebug.server.type.nat

Source Code of railo.intergral.fusiondebug.server.type.nat.FDNative

package railo.intergral.fusiondebug.server.type.nat;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;

import railo.commons.lang.ClassUtil;
import railo.intergral.fusiondebug.server.type.FDValueNotMutability;
import railo.intergral.fusiondebug.server.type.simple.FDSimpleVariable;
import railo.runtime.op.Caster;
import railo.runtime.type.ObjectWrap;

import com.intergral.fusiondebug.server.IFDStackFrame;

public class FDNative extends FDValueNotMutability {

  private ArrayList children=new ArrayList();
 
  private String name;

  private Object value;

  /**
   * Constructor of the class
   * @param frame
   * @param name
   * @param coll
   */
  public FDNative(IFDStackFrame frame, String name, Object value) {
    this.name=name;
   
    if(value instanceof ObjectWrap){
      value=((ObjectWrap)value).getEmbededObject(value);
    }
    this.value=value;
   
    Class clazz = value.getClass();
   
   
    // super
    children.add(new FDSimpleVariable(frame,"Extends",ClassUtil.getName(clazz.getSuperclass()),null));
   
    // interfaces
    Class[] faces = clazz.getInterfaces();
    if(faces.length>0){
      ArrayList list = new ArrayList();
     
      children.add(new FDSimpleVariable(frame,"Interfaces","",list));
      for(int i=0;i<faces.length;i++){
        list.add(new FDSimpleVariable(frame,"["+(i+1)+"]",ClassUtil.getName(faces[i]),null));
      }
    }
    ArrayList el,list;
   
    // fields
    Field[] flds = clazz.getFields();
    if(flds.length>0){
      Field fld;
      list = new ArrayList();
      children.add(new FDSimpleVariable(frame,"Fields","",list));
      for(int i=0;i<flds.length;i++){
        fld=flds[i];
        el = new ArrayList();
        list.add(new FDSimpleVariable(frame,fld.getName(),"",el));
        el.add(new FDSimpleVariable(frame,"Type",ClassUtil.getName(fld.getType()),null));
        el.add(new FDSimpleVariable(frame,"Modifier",Modifier.toString(fld.getModifiers()),null));
      }
    }
    // methods
    Method[] mths = clazz.getMethods();
    if(mths.length>0){
      Method mth;
      list = new ArrayList();
      children.add(new FDSimpleVariable(frame,"Methods","",list));
      for(int i=0;i<mths.length;i++){
        mth=mths[i];
        el = new ArrayList();
        list.add(new FDSimpleVariable(frame,mth.getName(),"",el));
       
        el.add(new FDSimpleVariable(frame,"Modifier",Modifier.toString(mth.getModifiers()),null));
       
        // exceptions
        Class[] clsTypes = mth.getExceptionTypes();
        if(clsTypes.length>0){
          ArrayList exps = new ArrayList();
          el.add(new FDSimpleVariable(frame,"Exceptions",Caster.toString(clsTypes.length),exps));
          for(int y=0;y<clsTypes.length;y++){
            exps.add(new FDSimpleVariable(frame,"["+(y+1)+"]",ClassUtil.getName(clsTypes[y]),null));
          }
        }
       
        // params
        Class[] clsParams = mth.getParameterTypes();
        if(clsParams.length>0){
          ArrayList params = new ArrayList();
          el.add(new FDSimpleVariable(frame,"Parameters",Caster.toString(clsParams.length),params));
          for(int y=0;y<clsParams.length;y++){
            params.add(new FDSimpleVariable(frame,"["+(y+1)+"]",ClassUtil.getName(clsParams[y]),null));
          }
        }
       
        // return
        el.add(new FDSimpleVariable(frame,"Return",ClassUtil.getName(mth.getReturnType()),null));
      }
    }
  }

  @Override
  public List getChildren() {
    return children;
  }

  public String getName() {
    return name;
  }

  @Override
  public boolean hasChildren() {
    return true;
  }
 
  @Override
  public String toString() {
    return Caster.toClassName(value);
  }
}
TOP

Related Classes of railo.intergral.fusiondebug.server.type.nat.FDNative

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.