Package javax.tools.diagnostics.runtime.java

Examples of javax.tools.diagnostics.runtime.java.JavaClass


  private ReferenceIterator getObjectReferences(JavaObject thisObject)
  {
    List references = new LinkedList();
   
    try {
      JavaClass thisClass = thisObject.getJavaClass();
   
      if(thisClass.isArray()) {
        addArrayReferences(thisObject, references);
      } else {
        addRegularObjectReferences(thisObject, references,thisClass);
      }
    } catch(DiagnosticException ex) {
View Full Code Here


        if (nextClazz instanceof CorruptData) {
          continue;
        }

        JavaClass clazz = (JavaClass) nextClazz;

        try {
          if (name.equals(clazz.getName())) {
            return clazz;
          }
        } catch (CorruptDataException e) {
          // IGNORE
        }
View Full Code Here

       
        if (nextClazz instanceof CorruptData) {
          continue;
        }
       
        JavaClass clazz = (JavaClass) nextClazz;
        try {
          boolean rc = visitor.visit(clazz);
          if (rc == false) {
            break CLASSLOADERS;
          }
View Full Code Here

      this.clazzName = name;
      this.list = list;
    }
   
    public boolean visit(JavaClass clazz) throws DiagnosticException {
      JavaClass subClass = clazz;
      while((clazz != null)
          && !(clazzName.equals(clazz.getName()))) {
        clazz = clazz.getSuperclass();
      }
     
View Full Code Here

    Iterator itObject = jh.getObjects().iterator();
    boolean found = false;

    if (objName != null)
    {
      JavaClass objClass = Utils.getClassGivenName(objName, jr, out);
     
      // if we couldn't find a class of that name, return; the passed in class name could
      //  still be an array type or it might not exist
      if (null == objClass)
      {
        out.print("\t  could not find class with name \"" + objName + "\"\n\n");
        return;
      }
     
      ClassOutput.printStaticFields(objClass, out);
     
      while (itObject.hasNext())
      {
        jo = (JavaObject)itObject.next();


        String className;
        String hierarchy = "";
        JavaClass jc;

        try {
          jc = jo.getJavaClass();
        } catch (CorruptDataException e) {
          out.print("\t  <error getting class while traversing objects: ");
          out.print(Exceptions.getCorruptDataExceptionString());
          out.print(">\n");
          jc = null;
        }

        boolean foundSuperclass = false;
        while (jc != null && !foundSuperclass)
        {
          try {
            className = jc.getName();
          } catch (CorruptDataException e) {
            out.print("\t  <error getting class name while traversing objects: ");
            out.print(Exceptions.getCorruptDataExceptionString());
            out.print(">\n");
            jc = null;
            continue;
          }
           
          if (hierarchy.equals(""))
            hierarchy = className;
          else
            hierarchy = className + " => " + hierarchy;

          if (className.equals(objName))
          {
            found = true;
            foundSuperclass = true;
            out.print("\t  ");
            out.print(hierarchy);
            out.print(" @ ");
            out.print(Utils.toHex(jo.getID().getAddress()));
            out.print("\n");
           
            ClassOutput.printFields(jo, jc, jr, out);
          }
          else
          {
            if (supers)
            {
              try {
                jc = jc.getSuperclass();
              } catch (CorruptDataException e) {
                out.print("\t  <error getting superclass while traversing objects: ");
                out.print(Exceptions.getCorruptDataExceptionString());
                out.print(">\n");
                jc = null;
              }
            }
            else
            {
              jc = null;
            }
          }
        }
      }
    }
    else // objAddress != null
    {
      boolean done = false;
      while (itObject.hasNext() && !done)
      {
        jo = (JavaObject)itObject.next();


        if (jo.getID().getAddress() == objAddress.longValue())
        {
          JavaClass jc;
         
          found = true;
          out.print("\t  ");
          try {
            jc = jo.getJavaClass();
          } catch (CorruptDataException e) {
            out.print("\t  <error getting class while traversing objects: ");
            out.print(Exceptions.getCorruptDataExceptionString());
            out.print(">");
            jc = null;
          }
         
          if (null != jc)
          {
            try {
              out.print(jc.getName());
            } catch (CorruptDataException e) {
              out.print("\t  <error getting class name while traversing objects: ");
              out.print(Exceptions.getCorruptDataExceptionString());
              out.print(">");
            }
View Full Code Here

      // why are we processing objects here?
      //  because we want control over the exceptions that are thrown
      if (object)
      {
        JavaObject joField = (JavaObject)o;
        JavaClass jcField;
        String jcName;
       
        try {
          jcField = joField.getJavaClass();
        } catch (CorruptDataException e) {
          jcField = null;
        }
       
        try {
          if (null != jcField) {
            jcName = jcField.getName();
          } else {
            jcName = null;
          }
        } catch (CorruptDataException e) {
          jcName = null;
View Full Code Here

    return val;
  }
 
  private static String getStringVal(JavaObject jo)
  {
    JavaClass jc;
   
    try {
      jc = jo.getJavaClass();
    } catch (CorruptDataException e) {
      return "<cannot get String class from String object (" +
        Exceptions.getCorruptDataExceptionString() + ")>";
    }
   
    Iterator itJavaField = jc.getDeclaredFields().iterator();
    JavaField jf = null;
    while (itJavaField.hasNext())
    {
      jf = (JavaField)itJavaField.next();
      try {
View Full Code Here

 
  public static JavaClass getClassGivenName(String className, JavaRuntime jr, Output out)
  {
    Iterator itJavaClassLoader = jr.getJavaClassLoaders().iterator();
    boolean found = false;
    JavaClass jc = null;
   
    while (itJavaClassLoader.hasNext() && !found)
    {
      JavaClassLoader jcl = (JavaClassLoader)itJavaClassLoader.next();
      Iterator itJavaClass = jcl.getDefinedClasses().iterator();
      while (itJavaClass.hasNext() && !found)
      {
        jc = (JavaClass)itJavaClass.next();
        String currClassName;

        try {
          currClassName = jc.getName();
        } catch (CorruptDataException e) {
          out.print("\t  <error getting class name while traversing classes: ");
          out.print(Exceptions.getCorruptDataExceptionString());
          out.print(">\n");
          currClassName = null;
View Full Code Here

 
 
  private void checkMethodInRange(Iterator objects, long address){
    while(objects.hasNext()){
      JavaObject jObject = (JavaObject)objects.next();
      JavaClass jClass;
      try{
        jClass = jObject.getJavaClass();
      }catch(CorruptDataException cde){
        //go to the next iteration
        continue;
      }
      Iterator methods = jClass.getDeclaredMethods().iterator();
      while(methods.hasNext()){
        JavaMethod jMethod = (JavaMethod)methods.next();
        Iterator bytecodeSections = jMethod.getBytecodeSections().iterator();
        Iterator compiledSections = jMethod.getCompiledSections().iterator();
        isWithinImageSections(bytecodeSections, jMethod, false, address);
View Full Code Here

 
  private void checkClassInRange(Iterator objects, long bound, long address){
    long startAddress, endAddress ;
    while(objects.hasNext()){
      JavaObject jObject = (JavaObject)objects.next();
      JavaClass jClass;
      String className;
      try{
        jClass = jObject.getJavaClass();
        className = jClass.getName();
      }catch(CorruptDataException cde){
        //TODO exception handling
        continue;
      }
      startAddress = jClass.getID().getAddress();
      endAddress = startAddress + bound;
      if(address == startAddress){
        out.print("0x" + Long.toHexString(address) +
            " is the address of the java/lang/Class object for " + className);
        return;
View Full Code Here

TOP

Related Classes of javax.tools.diagnostics.runtime.java.JavaClass

Copyright © 2018 www.massapicom. 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.