Package com.android.dx.dex.code

Examples of com.android.dx.dex.code.CatchTable$Entry


    DalvInsnList instructions= code.getInsns();
    codeElement.setAttribute("register-size", String.valueOf(instructions.getRegistersSize()));
    processLocals(instructions.getRegistersSize(), isStatic, parseClassName(cf.getThisClass().getClassType().getClassName()).toString(), meth.getPrototype().getParameterTypes(), codeElement);
    Map<Integer, SwitchData> switchDataBlocks= extractSwitchData(instructions);
    Map<Integer, ArrayData> arrayData= extractArrayData(instructions);
    CatchTable catches= code.getCatches();
    processCatchTable(catches, codeElement);
    Map<Integer, Target> targets= extractTargets(instructions, catches);

    // For each entry in the catch table, we create a try-catch element,
    // including the try and all the catch children and append it to the
    // code element. We store the try elements in a list, in order to
    // append the matching instructions to them as they are processed.
    List<Element> tryElements= new ArrayList<Element>();
    Map<Integer, Element> tryCatchElements= new HashMap<Integer, Element>();
    for (int i= 0; i < catches.size(); ++i)
    {
      Element tryCatchElement= new Element("try-catch", NS_DEX);
      Element tryElement= new Element("try", NS_DEX);
      tryCatchElement.addContent(tryElement);
      tryElements.add(tryElement);

      // For each handler create a catch element as the child of the
      // try-catch element.
      CatchHandlerList handlers= catches.get(i).getHandlers();
      for (int j= 0; j < handlers.size(); ++j)
      {
        String exceptionType= handlers.get(j).getExceptionType().toHuman();

        // We can remove the exception because a red type exception
        // will never be created or thrown.
        // This change is in sync with the one in processCatchTable
        if (!isRedType(exceptionType))
        {
          Element catchElement= new Element("catch", NS_DEX);
          catchElement.setAttribute("exception-type", exceptionType);
          catchElement.setAttribute("target", String.valueOf(handlers.get(j).getHandler()));
          tryCatchElement.addContent(catchElement);
        }
      }
      tryCatchElements.put(catches.get(i).getStart(), tryCatchElement);
    }

    Element lastTryCatchElement= null;

    // Used inside processInstruction to mark source file lines as
    // already added, so they don't get added twice.
    List<Integer> sourceLinesAlreadyPut= new ArrayList<Integer>();
    // Process every single instruction of this method. Either add it do
    // the main code element, or to a try-catch block.
    for (int i= 0; i < instructions.size(); ++i)
    {
      Element instructionParent= codeElement;
      DalvInsn instruction= instructions.get(i);
      int address= instruction.getAddress();

      // Determine whether to add the next instruction to the
      // codeElement or to a try block.
      Entry currentCatch= null;
      int tryElementIndex= 0;
      for (tryElementIndex= 0; tryElementIndex < catches.size(); ++tryElementIndex)
      {
        if (isInstructionInCatchRange(instruction, catches.get(tryElementIndex)))
        {
          instructionParent= tryElements.get(tryElementIndex);
          currentCatch= catches.get(tryElementIndex);
          break;
        }
      }

      // Adds a label element for each target we extracted earlier.
View Full Code Here


  }

  @Override
  protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    Entry e = entry(req);
    S3Object remove = map.remove(e);
    if (remove == null) {
      resp.sendError(404, "Not found " + e);
    } else {
      resp.sendError(HttpURLConnection.HTTP_NO_CONTENT, "Deleted");
View Full Code Here

    }

  }

  private Entry entry(HttpServletRequest req) {
    return new Entry(key(uri(req)));
  }
View Full Code Here

        log("doGet " + uri);
    if ("/".equals(uri.getPath())) {
      list(req, resp);
    } else {
      String key = uri.getPath().substring(1);
      Entry e = new Entry(key);
      S3Object obj = map.get(e);
        if (debug)
          log("map.get(" + key + ") = " + obj);
      if (obj == null) {
        resp.sendError(404, "Not here: " + e);
View Full Code Here

    if (maxKeysStr != null)
      maxKeys = Integer.parseInt(maxKeysStr);
    Writer w = new Writer();
    SortedMap<Entry, S3Object> submap = new TreeMap<Entry, S3Object>(map);
    if (prefix != null)
      submap = submap.tailMap(new Entry(prefix));
    int keyCount = 0;
    boolean truncated = false;
    String nextMarker = null;
    for (Entry e : submap.keySet()) {
      if (++keyCount > maxKeys) {
View Full Code Here

    log("doPut " + uri);
    if ("/".equals(uri.getPath())) {
      log("create bucket");
      bucket = true;
    } else {
      Entry e = new Entry(key(uri));
      e.setLastModified(new Date());
      e.setSize(req.getContentLength());
      e.setOwner(new Owner("id", "name"));
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      ServletInputStream is = req.getInputStream();
      byte b[] = new byte[128];
      while (true) {
        int len = is.read(b);
View Full Code Here

                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry outputEntry = new Entry();
                                outputEntry.setKey(ACTUAL_RESULT);
                                outputEntry.setValue(testRecord.get(ACTUAL_RESULT).toString());
                                outputData.getEntry().add(outputEntry);
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
View Full Code Here

                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry outputEntry = new Entry();
                                outputEntry.setKey(ACTUAL_RESULT);
                                outputEntry.setValue(testRecord.get(ACTUAL_RESULT).toString());
                                Entry durationEntry = new Entry();
                                durationEntry.setKey(DURATION);
                                durationEntry.setValue(testRecord.get(DURATION).toString());
                                outputData.getEntry().add(outputEntry);
                                outputData.getEntry().add(durationEntry);
                                if(testRecord.get(TEST_STATUS) != null){
                                    Entry statusEntry = new Entry();
                                    statusEntry.setKey(TEST_STATUS);
                                    statusEntry.setValue(testRecord.get(TEST_STATUS).toString());
                                    outputData.getEntry().add(statusEntry);
                                }
                               
                               
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
                        }
                        if (outputDataAdded) {
                            break;
                        }
                    }
                }else{
                    //Method did not return any data. So only write the duration as output
                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry durationEntry = new Entry();
                                durationEntry.setKey(DURATION);
                                durationEntry.setValue(testRecord.get(DURATION).toString());
                                outputData.getEntry().add(durationEntry);
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
View Full Code Here

TOP

Related Classes of com.android.dx.dex.code.CatchTable$Entry

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.