Beispiel #1
0
  private void processEntry(
      final ZipInputStream zis, final ZipEntry ze, final ContentHandlerFactory handlerFactory) {
    ContentHandler handler = handlerFactory.createContentHandler();
    try {

      // if (CODE2ASM.equals(command)) { // read bytecode and process it
      // // with TraceClassVisitor
      // ClassReader cr = new ClassReader(readEntry(zis, ze));
      // cr.accept(new TraceClassVisitor(null, new PrintWriter(os)),
      // false);
      // }

      boolean singleInputDocument = inRepresentation == SINGLE_XML;
      if (inRepresentation == BYTECODE) { // read bytecode and process it
        // with handler
        ClassReader cr = new ClassReader(readEntry(zis, ze));
        cr.accept(new SAXClassAdapter(handler, singleInputDocument), 0);

      } else { // read XML and process it with handler
        XMLReader reader = XMLReaderFactory.createXMLReader();
        reader.setContentHandler(handler);
        reader.parse(
            new InputSource(
                singleInputDocument
                    ? (InputStream) new ProtectedInputStream(zis)
                    : new ByteArrayInputStream(readEntry(zis, ze))));
      }
    } catch (Exception ex) {
      update(ze.getName(), 0);
      update(ex, 0);
    }
  }
Beispiel #2
0
 @Override
 public final void startElement(
     final String namespaceURI,
     final String localName,
     final String qName,
     final Attributes list)
     throws SAXException {
   if (subdocument) {
     subdocumentHandler.startElement(namespaceURI, localName, qName, list);
   } else if (localName.equals(subdocumentRoot)) {
     String name = list.getValue("name");
     if (name == null || name.length() == 0) {
       throw new SAXException("Class element without name attribute.");
     }
     try {
       entryElement.openEntry(isXml ? name + ".class.xml" : name + ".class");
     } catch (IOException ex) {
       throw new SAXException(ex.toString(), ex);
     }
     subdocumentHandler = subdocumentHandlerFactory.createContentHandler();
     subdocumentHandler.startDocument();
     subdocumentHandler.startElement(namespaceURI, localName, qName, list);
     subdocument = true;
   }
 }
Beispiel #3
0
 public final void startElement(
     final String namespaceURI,
     final String localName,
     final String qName,
     final Attributes list)
     throws SAXException {
   if (subdocument) {
     subdocumentHandler.startElement(namespaceURI, localName, qName, list);
   } else if (localName.equals(subdocumentRoot)) {
     subdocumentHandler = subdocumentHandlerFactory.createContentHandler();
     subdocumentHandler.startDocument();
     subdocumentHandler.startElement(namespaceURI, localName, qName, list);
     subdocument = true;
   } else if (rootHandler != null) {
     rootHandler.startElement(namespaceURI, localName, qName, list);
   }
 }