You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2018/11/29 00:33:49 UTC
[02/46] tapestry-5 git commit: TAP5-2588: upgrading from ASM 6 to 7
for Java 9+ support
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/Processor.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/Processor.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/Processor.java
deleted file mode 100644
index a04930f..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/Processor.java
+++ /dev/null
@@ -1,1044 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import javax.xml.transform.Source;
-import javax.xml.transform.Templates;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.sax.SAXSource;
-import javax.xml.transform.sax.SAXTransformerFactory;
-import javax.xml.transform.sax.TransformerHandler;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.tapestry5.internal.plastic.asm.ClassReader;
-import org.apache.tapestry5.internal.plastic.asm.ClassWriter;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.AttributesImpl;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/**
- * Processor is a command line tool that can be used for bytecode waving
- * directed by XSL transformation.
- * <p>
- * In order to use a concrete XSLT engine, system property
- * <tt>javax.xml.transform.TransformerFactory</tt> must be set to one of the
- * following values.
- *
- * <blockquote>
- * <table border="1" cellspacing="0" cellpadding="3">
- * <tr>
- * <td>jd.xslt</td>
- * <td>jd.xml.xslt.trax.TransformerFactoryImpl</td>
- * </tr>
- *
- * <tr>
- * <td>Saxon</td>
- * <td>net.sf.saxon.TransformerFactoryImpl</td>
- * </tr>
- *
- * <tr>
- * <td>Caucho</td>
- * <td>com.caucho.xsl.Xsl</td>
- * </tr>
- *
- * <tr>
- * <td>Xalan interpeter</td>
- * <td>org.apache.xalan.processor.TransformerFactory</td>
- * </tr>
- *
- * <tr>
- * <td>Xalan xsltc</td>
- * <td>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</td>
- * </tr>
- * </table>
- * </blockquote>
- *
- * @author Eugene Kuleshov
- */
-public class Processor {
-
- public static final int BYTECODE = 1;
-
- public static final int MULTI_XML = 2;
-
- public static final int SINGLE_XML = 3;
-
- private static final String SINGLE_XML_NAME = "classes.xml";
-
- private final int inRepresentation;
-
- private final int outRepresentation;
-
- private final InputStream input;
-
- private final OutputStream output;
-
- private final Source xslt;
-
- private int n = 0;
-
- public Processor(final int inRepresenation, final int outRepresentation,
- final InputStream input, final OutputStream output,
- final Source xslt) {
- this.inRepresentation = inRepresenation;
- this.outRepresentation = outRepresentation;
- this.input = input;
- this.output = output;
- this.xslt = xslt;
- }
-
- public int process() throws TransformerException, IOException, SAXException {
- ZipInputStream zis = new ZipInputStream(input);
- final ZipOutputStream zos = new ZipOutputStream(output);
- final OutputStreamWriter osw = new OutputStreamWriter(zos);
-
- Thread.currentThread().setContextClassLoader(
- getClass().getClassLoader());
-
- TransformerFactory tf = TransformerFactory.newInstance();
- if (!tf.getFeature(SAXSource.FEATURE)
- || !tf.getFeature(SAXResult.FEATURE)) {
- return 0;
- }
-
- SAXTransformerFactory saxtf = (SAXTransformerFactory) tf;
- Templates templates = null;
- if (xslt != null) {
- templates = saxtf.newTemplates(xslt);
- }
-
- // configuring outHandlerFactory
- // ///////////////////////////////////////////////////////
-
- EntryElement entryElement = getEntryElement(zos);
-
- ContentHandler outDocHandler = null;
- switch (outRepresentation) {
- case BYTECODE:
- outDocHandler = new OutputSlicingHandler(
- new ASMContentHandlerFactory(zos), entryElement, false);
- break;
-
- case MULTI_XML:
- outDocHandler = new OutputSlicingHandler(new SAXWriterFactory(osw,
- true), entryElement, true);
- break;
-
- case SINGLE_XML:
- ZipEntry outputEntry = new ZipEntry(SINGLE_XML_NAME);
- zos.putNextEntry(outputEntry);
- outDocHandler = new SAXWriter(osw, false);
- break;
-
- }
-
- // configuring inputDocHandlerFactory
- // /////////////////////////////////////////////////
- ContentHandler inDocHandler;
- if (templates == null) {
- inDocHandler = outDocHandler;
- } else {
- inDocHandler = new InputSlicingHandler("class", outDocHandler,
- new TransformerHandlerFactory(saxtf, templates,
- outDocHandler));
- }
- ContentHandlerFactory inDocHandlerFactory = new SubdocumentHandlerFactory(
- inDocHandler);
-
- if (inDocHandler != null && inRepresentation != SINGLE_XML) {
- inDocHandler.startDocument();
- inDocHandler.startElement("", "classes", "classes",
- new AttributesImpl());
- }
-
- int i = 0;
- ZipEntry ze;
- while ((ze = zis.getNextEntry()) != null) {
- update(ze.getName(), n++);
- if (isClassEntry(ze)) {
- processEntry(zis, ze, inDocHandlerFactory);
- } else {
- OutputStream os = entryElement.openEntry(getName(ze));
- copyEntry(zis, os);
- entryElement.closeEntry();
- }
-
- i++;
- }
-
- if (inDocHandler != null && inRepresentation != SINGLE_XML) {
- inDocHandler.endElement("", "classes", "classes");
- inDocHandler.endDocument();
- }
-
- if (outRepresentation == SINGLE_XML) {
- zos.closeEntry();
- }
- zos.flush();
- zos.close();
-
- return i;
- }
-
- private void copyEntry(final InputStream is, final OutputStream os)
- throws IOException {
- if (outRepresentation == SINGLE_XML) {
- return;
- }
-
- byte[] buff = new byte[2048];
- int i;
- while ((i = is.read(buff)) != -1) {
- os.write(buff, 0, i);
- }
- }
-
- private boolean isClassEntry(final ZipEntry ze) {
- String name = ze.getName();
- return inRepresentation == SINGLE_XML && name.equals(SINGLE_XML_NAME)
- || name.endsWith(".class") || name.endsWith(".class.xml");
- }
-
- 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);
- }
- }
-
- private EntryElement getEntryElement(final ZipOutputStream zos) {
- if (outRepresentation == SINGLE_XML) {
- return new SingleDocElement(zos);
- }
- return new ZipEntryElement(zos);
- }
-
- // private ContentHandlerFactory getHandlerFactory(
- // OutputStream os,
- // SAXTransformerFactory saxtf,
- // Templates templates)
- // {
- // ContentHandlerFactory factory = null;
- // if (templates == null) {
- // if (outputRepresentation == BYTECODE) { // factory used to write
- // // bytecode
- // factory = new ASMContentHandlerFactory(os, computeMax);
- // } else { // factory used to write XML
- // factory = new SAXWriterFactory(os, true);
- // }
- // } else {
- // if (outputRepresentation == BYTECODE) { // factory used to transform
- // // and then write bytecode
- // factory = new ASMTransformerHandlerFactory(saxtf,
- // templates,
- // os,
- // computeMax);
- // } else { // factory used to transformand then write XML
- // factory = new TransformerHandlerFactory(saxtf,
- // templates,
- // os,
- // outputRepresentation == SINGLE_XML);
- // }
- // }
- // return factory;
- // }
-
- private String getName(final ZipEntry ze) {
- String name = ze.getName();
- if (isClassEntry(ze)) {
- if (inRepresentation != BYTECODE && outRepresentation == BYTECODE) {
- name = name.substring(0, name.length() - 4); // .class.xml to
- // .class
- } else if (inRepresentation == BYTECODE
- && outRepresentation != BYTECODE) {
- name += ".xml"; // .class to .class.xml
- }
- // } else if( CODE2ASM.equals( command)) {
- // name = name.substring( 0, name.length()-6).concat( ".asm");
- }
- return name;
- }
-
- private static byte[] readEntry(final InputStream zis, final ZipEntry ze)
- throws IOException {
- long size = ze.getSize();
- if (size > -1) {
- byte[] buff = new byte[(int) size];
- int k = 0;
- int n;
- while ((n = zis.read(buff, k, buff.length - k)) > 0) {
- k += n;
- }
- return buff;
- }
-
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] buff = new byte[4096];
- int i;
- while ((i = zis.read(buff)) != -1) {
- bos.write(buff, 0, i);
- }
- return bos.toByteArray();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
- */
- protected void update(final Object arg, final int n) {
- if (arg instanceof Throwable) {
- ((Throwable) arg).printStackTrace();
- } else {
- if (n % 100 == 0) {
- System.err.println(n + " " + arg);
- }
- }
- }
-
- public static void main(final String[] args) throws Exception {
- if (args.length < 2) {
- showUsage();
- return;
- }
-
- int inRepresentation = getRepresentation(args[0]);
- int outRepresentation = getRepresentation(args[1]);
-
- InputStream is = System.in;
- OutputStream os = new BufferedOutputStream(System.out);
-
- Source xslt = null;
- // boolean computeMax = true;
-
- for (int i = 2; i < args.length; i++) {
- if ("-in".equals(args[i])) {
- is = new FileInputStream(args[++i]);
-
- } else if ("-out".equals(args[i])) {
- os = new BufferedOutputStream(new FileOutputStream(args[++i]));
-
- } else if ("-xslt".equals(args[i])) {
- xslt = new StreamSource(new FileInputStream(args[++i]));
-
- // } else if( "-computemax".equals( args[ i].toLowerCase())) {
- // computeMax = true;
-
- } else {
- showUsage();
- return;
-
- }
- }
-
- if (inRepresentation == 0 || outRepresentation == 0) {
- showUsage();
- return;
- }
-
- Processor m = new Processor(inRepresentation, outRepresentation, is,
- os, xslt);
-
- long l1 = System.currentTimeMillis();
- int n = m.process();
- long l2 = System.currentTimeMillis();
- System.err.println(n);
- System.err.println((l2 - l1) + "ms " + 1000f * n / (l2 - l1)
- + " resources/sec");
- }
-
- private static int getRepresentation(final String s) {
- if ("code".equals(s)) {
- return BYTECODE;
- } else if ("xml".equals(s)) {
- return MULTI_XML;
- } else if ("singlexml".equals(s)) {
- return SINGLE_XML;
- }
- return 0;
- }
-
- private static void showUsage() {
- System.err
- .println("Usage: Main <in format> <out format> [-in <input jar>] [-out <output jar>] [-xslt <xslt fiel>]");
- System.err
- .println(" when -in or -out is omitted sysin and sysout would be used");
- System.err
- .println(" <in format> and <out format> - code | xml | singlexml");
- }
-
- /**
- * IputStream wrapper class used to protect input streams from being closed
- * by some stupid XML parsers.
- */
- private static final class ProtectedInputStream extends InputStream {
- private final InputStream is;
-
- ProtectedInputStream(final InputStream is) {
- this.is = is;
- }
-
- @Override
- public final void close() throws IOException {
- }
-
- @Override
- public final int read() throws IOException {
- return is.read();
- }
-
- @Override
- public final int read(final byte[] b, final int off, final int len)
- throws IOException {
- return is.read(b, off, len);
- }
-
- @Override
- public final int available() throws IOException {
- return is.available();
- }
- }
-
- /**
- * A {@link ContentHandlerFactory ContentHandlerFactory} is used to create
- * {@link org.xml.sax.ContentHandler ContentHandler} instances for concrete
- * context.
- */
- private static interface ContentHandlerFactory {
-
- /**
- * Creates an instance of the content handler.
- *
- * @return content handler
- */
- ContentHandler createContentHandler();
-
- }
-
- /**
- * SAXWriterFactory
- */
- private static final class SAXWriterFactory implements
- ContentHandlerFactory {
- private final Writer w;
-
- private final boolean optimizeEmptyElements;
-
- SAXWriterFactory(final Writer w, final boolean optimizeEmptyElements) {
- this.w = w;
- this.optimizeEmptyElements = optimizeEmptyElements;
- }
-
- public final ContentHandler createContentHandler() {
- return new SAXWriter(w, optimizeEmptyElements);
- }
-
- }
-
- /**
- * ASMContentHandlerFactory
- */
- private static final class ASMContentHandlerFactory implements
- ContentHandlerFactory {
- final OutputStream os;
-
- ASMContentHandlerFactory(final OutputStream os) {
- this.os = os;
- }
-
- public final ContentHandler createContentHandler() {
- final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
- return new ASMContentHandler(cw) {
- @Override
- public void endDocument() throws SAXException {
- try {
- os.write(cw.toByteArray());
- } catch (IOException e) {
- throw new SAXException(e);
- }
- }
- };
- }
-
- }
-
- /**
- * TransformerHandlerFactory
- */
- private static final class TransformerHandlerFactory implements
- ContentHandlerFactory {
- private SAXTransformerFactory saxtf;
-
- private final Templates templates;
-
- private ContentHandler outputHandler;
-
- TransformerHandlerFactory(final SAXTransformerFactory saxtf,
- final Templates templates, final ContentHandler outputHandler) {
- this.saxtf = saxtf;
- this.templates = templates;
- this.outputHandler = outputHandler;
- }
-
- public final ContentHandler createContentHandler() {
- try {
- TransformerHandler handler = saxtf
- .newTransformerHandler(templates);
- handler.setResult(new SAXResult(outputHandler));
- return handler;
- } catch (TransformerConfigurationException ex) {
- throw new RuntimeException(ex.toString());
- }
- }
- }
-
- /**
- * SubdocumentHandlerFactory
- */
- private static final class SubdocumentHandlerFactory implements
- ContentHandlerFactory {
- private final ContentHandler subdocumentHandler;
-
- SubdocumentHandlerFactory(final ContentHandler subdocumentHandler) {
- this.subdocumentHandler = subdocumentHandler;
- }
-
- public final ContentHandler createContentHandler() {
- return subdocumentHandler;
- }
-
- }
-
- /**
- * A {@link org.xml.sax.ContentHandler ContentHandler} and
- * {@link org.xml.sax.ext.LexicalHandler LexicalHandler} that serializes XML
- * from SAX 2.0 events into {@link java.io.Writer Writer}.
- *
- * <i><blockquote> This implementation does not support namespaces, entity
- * definitions (uncluding DTD), CDATA and text elements. </blockquote></i>
- */
- private static final class SAXWriter extends DefaultHandler implements
- LexicalHandler {
- private static final char[] OFF = " "
- .toCharArray();
-
- private Writer w;
-
- private final boolean optimizeEmptyElements;
-
- private boolean openElement = false;
-
- private int ident = 0;
-
- /**
- * Creates <code>SAXWriter</code>.
- *
- * @param w
- * writer
- * @param optimizeEmptyElements
- * if set to <code>true</code>, short XML syntax will be used
- * for empty elements
- */
- SAXWriter(final Writer w, final boolean optimizeEmptyElements) {
- this.w = w;
- this.optimizeEmptyElements = optimizeEmptyElements;
- }
-
- @Override
- public final void startElement(final String ns, final String localName,
- final String qName, final Attributes atts) throws SAXException {
- try {
- closeElement();
-
- writeIdent();
- w.write('<' + qName);
- if (atts != null && atts.getLength() > 0) {
- writeAttributes(atts);
- }
-
- if (optimizeEmptyElements) {
- openElement = true;
- } else {
- w.write(">\n");
- }
- ident += 2;
-
- } catch (IOException ex) {
- throw new SAXException(ex);
-
- }
- }
-
- @Override
- public final void endElement(final String ns, final String localName,
- final String qName) throws SAXException {
- ident -= 2;
- try {
- if (openElement) {
- w.write("/>\n");
- openElement = false;
- } else {
- writeIdent();
- w.write("</" + qName + ">\n");
- }
-
- } catch (IOException ex) {
- throw new SAXException(ex);
-
- }
- }
-
- @Override
- public final void endDocument() throws SAXException {
- try {
- w.flush();
-
- } catch (IOException ex) {
- throw new SAXException(ex);
-
- }
- }
-
- public final void comment(final char[] ch, final int off, final int len)
- throws SAXException {
- try {
- closeElement();
-
- writeIdent();
- w.write("<!-- ");
- w.write(ch, off, len);
- w.write(" -->\n");
-
- } catch (IOException ex) {
- throw new SAXException(ex);
-
- }
- }
-
- public final void startDTD(final String arg0, final String arg1,
- final String arg2) throws SAXException {
- }
-
- public final void endDTD() throws SAXException {
- }
-
- public final void startEntity(final String arg0) throws SAXException {
- }
-
- public final void endEntity(final String arg0) throws SAXException {
- }
-
- public final void startCDATA() throws SAXException {
- }
-
- public final void endCDATA() throws SAXException {
- }
-
- private final void writeAttributes(final Attributes atts)
- throws IOException {
- StringBuilder sb = new StringBuilder();
- int len = atts.getLength();
- for (int i = 0; i < len; i++) {
- sb.append(' ').append(atts.getLocalName(i)).append("=\"")
- .append(esc(atts.getValue(i))).append('\"');
- }
- w.write(sb.toString());
- }
-
- /**
- * Encode string with escaping.
- *
- * @param str
- * string to encode.
- * @return encoded string
- */
- private static final String esc(final String str) {
- StringBuilder sb = new StringBuilder(str.length());
- for (int i = 0; i < str.length(); i++) {
- char ch = str.charAt(i);
- switch (ch) {
- case '&':
- sb.append("&");
- break;
-
- case '<':
- sb.append("<");
- break;
-
- case '>':
- sb.append(">");
- break;
-
- case '\"':
- sb.append(""");
- break;
-
- default:
- if (ch > 0x7f) {
- sb.append("&#").append(Integer.toString(ch))
- .append(';');
- } else {
- sb.append(ch);
- }
-
- }
- }
- return sb.toString();
- }
-
- private final void writeIdent() throws IOException {
- int n = ident;
- while (n > 0) {
- if (n > OFF.length) {
- w.write(OFF);
- n -= OFF.length;
- } else {
- w.write(OFF, 0, n);
- n = 0;
- }
- }
- }
-
- private final void closeElement() throws IOException {
- if (openElement) {
- w.write(">\n");
- }
- openElement = false;
- }
-
- }
-
- /**
- * A {@link org.xml.sax.ContentHandler ContentHandler} that splits XML
- * documents into smaller chunks. Each chunk is processed by the nested
- * {@link org.xml.sax.ContentHandler ContentHandler} obtained from
- * {@link java.net.ContentHandlerFactory ContentHandlerFactory}. This is
- * useful for running XSLT engine against large XML document that will
- * hardly fit into the memory all together.
- * <p>
- * TODO use complete path for subdocumentRoot
- */
- private static final class InputSlicingHandler extends DefaultHandler {
- private String subdocumentRoot;
-
- private final ContentHandler rootHandler;
-
- private ContentHandlerFactory subdocumentHandlerFactory;
-
- private boolean subdocument = false;
-
- private ContentHandler subdocumentHandler;
-
- /**
- * Constructs a new {@link InputSlicingHandler SubdocumentHandler}
- * object.
- *
- * @param subdocumentRoot
- * name/path to the root element of the subdocument
- * @param rootHandler
- * content handler for the entire document (subdocument
- * envelope).
- * @param subdocumentHandlerFactory
- * a {@link ContentHandlerFactory ContentHandlerFactory} used
- * to create {@link ContentHandler ContentHandler} instances
- * for subdocuments.
- */
- InputSlicingHandler(final String subdocumentRoot,
- final ContentHandler rootHandler,
- final ContentHandlerFactory subdocumentHandlerFactory) {
- this.subdocumentRoot = subdocumentRoot;
- this.rootHandler = rootHandler;
- this.subdocumentHandlerFactory = subdocumentHandlerFactory;
- }
-
- @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)) {
- subdocumentHandler = subdocumentHandlerFactory
- .createContentHandler();
- subdocumentHandler.startDocument();
- subdocumentHandler.startElement(namespaceURI, localName, qName,
- list);
- subdocument = true;
- } else if (rootHandler != null) {
- rootHandler.startElement(namespaceURI, localName, qName, list);
- }
- }
-
- @Override
- public final void endElement(final String namespaceURI,
- final String localName, final String qName) throws SAXException {
- if (subdocument) {
- subdocumentHandler.endElement(namespaceURI, localName, qName);
- if (localName.equals(subdocumentRoot)) {
- subdocumentHandler.endDocument();
- subdocument = false;
- }
- } else if (rootHandler != null) {
- rootHandler.endElement(namespaceURI, localName, qName);
- }
- }
-
- @Override
- public final void startDocument() throws SAXException {
- if (rootHandler != null) {
- rootHandler.startDocument();
- }
- }
-
- @Override
- public final void endDocument() throws SAXException {
- if (rootHandler != null) {
- rootHandler.endDocument();
-
- }
- }
-
- @Override
- public final void characters(final char[] buff, final int offset,
- final int size) throws SAXException {
- if (subdocument) {
- subdocumentHandler.characters(buff, offset, size);
- } else if (rootHandler != null) {
- rootHandler.characters(buff, offset, size);
- }
- }
-
- }
-
- /**
- * A {@link org.xml.sax.ContentHandler ContentHandler} that splits XML
- * documents into smaller chunks. Each chunk is processed by the nested
- * {@link org.xml.sax.ContentHandler ContentHandler} obtained from
- * {@link java.net.ContentHandlerFactory ContentHandlerFactory}. This is
- * useful for running XSLT engine against large XML document that will
- * hardly fit into the memory all together.
- *
- * <p>
- * TODO use complete path for subdocumentRoot
- */
- private static final class OutputSlicingHandler extends DefaultHandler {
- private final String subdocumentRoot;
-
- private ContentHandlerFactory subdocumentHandlerFactory;
-
- private final EntryElement entryElement;
-
- private boolean isXml;
-
- private boolean subdocument = false;
-
- private ContentHandler subdocumentHandler;
-
- /**
- * Constructs a new {@link OutputSlicingHandler SubdocumentHandler}
- * object.
- *
- * @param subdocumentHandlerFactory
- * a {@link ContentHandlerFactory ContentHandlerFactory} used
- * to create {@link ContentHandler ContentHandler} instances
- * for subdocuments.
- * @param entryElement
- * TODO.
- * @param isXml
- * TODO.
- */
- OutputSlicingHandler(
- final ContentHandlerFactory subdocumentHandlerFactory,
- final EntryElement entryElement, final boolean isXml) {
- this.subdocumentRoot = "class";
- this.subdocumentHandlerFactory = subdocumentHandlerFactory;
- this.entryElement = entryElement;
- this.isXml = isXml;
- }
-
- @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;
- }
- }
-
- @Override
- public final void endElement(final String namespaceURI,
- final String localName, final String qName) throws SAXException {
- if (subdocument) {
- subdocumentHandler.endElement(namespaceURI, localName, qName);
- if (localName.equals(subdocumentRoot)) {
- subdocumentHandler.endDocument();
- subdocument = false;
- try {
- entryElement.closeEntry();
- } catch (IOException ex) {
- throw new SAXException(ex.toString(), ex);
- }
- }
- }
- }
-
- @Override
- public final void startDocument() throws SAXException {
- }
-
- @Override
- public final void endDocument() throws SAXException {
- }
-
- @Override
- public final void characters(final char[] buff, final int offset,
- final int size) throws SAXException {
- if (subdocument) {
- subdocumentHandler.characters(buff, offset, size);
- }
- }
-
- }
-
- private static interface EntryElement {
-
- OutputStream openEntry(String name) throws IOException;
-
- void closeEntry() throws IOException;
-
- }
-
- private static final class SingleDocElement implements EntryElement {
- private final OutputStream os;
-
- SingleDocElement(final OutputStream os) {
- this.os = os;
- }
-
- public OutputStream openEntry(final String name) throws IOException {
- return os;
- }
-
- public void closeEntry() throws IOException {
- os.flush();
- }
-
- }
-
- private static final class ZipEntryElement implements EntryElement {
- private ZipOutputStream zos;
-
- ZipEntryElement(final ZipOutputStream zos) {
- this.zos = zos;
- }
-
- public OutputStream openEntry(final String name) throws IOException {
- ZipEntry entry = new ZipEntry(name);
- zos.putNextEntry(entry);
- return zos;
- }
-
- public void closeEntry() throws IOException {
- zos.flush();
- zos.closeEntry();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAdapter.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAdapter.java
deleted file mode 100644
index 2f49c24..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAdapter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-/**
- * SAXAdapter
- *
- * @author Eugene Kuleshov
- */
-public class SAXAdapter {
-
- private final ContentHandler h;
-
- protected SAXAdapter(final ContentHandler h) {
- this.h = h;
- }
-
- protected ContentHandler getContentHandler() {
- return h;
- }
-
- protected void addDocumentStart() {
- try {
- h.startDocument();
- } catch (SAXException ex) {
- throw new RuntimeException(ex.getMessage(), ex.getException());
- }
- }
-
- protected void addDocumentEnd() {
- try {
- h.endDocument();
- } catch (SAXException ex) {
- throw new RuntimeException(ex.getMessage(), ex.getException());
- }
- }
-
- protected final void addStart(final String name, final Attributes attrs) {
- try {
- h.startElement("", name, name, attrs);
- } catch (SAXException ex) {
- throw new RuntimeException(ex.getMessage(), ex.getException());
- }
- }
-
- protected final void addEnd(final String name) {
- try {
- h.endElement("", name, name);
- } catch (SAXException ex) {
- throw new RuntimeException(ex.getMessage(), ex.getException());
- }
- }
-
- protected final void addElement(final String name, final Attributes attrs) {
- addStart(name, attrs);
- addEnd(name);
- }
-}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java
deleted file mode 100644
index 76ad91e..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXAnnotationAdapter.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor;
-import org.apache.tapestry5.internal.plastic.asm.Opcodes;
-import org.apache.tapestry5.internal.plastic.asm.Type;
-import org.apache.tapestry5.internal.plastic.asm.TypePath;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * SAXAnnotationAdapter
- *
- * @author Eugene Kuleshov
- */
-public final class SAXAnnotationAdapter extends AnnotationVisitor {
-
- SAXAdapter sa;
-
- private final String elementName;
-
- public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
- final int visible, final String name, final String desc) {
- this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, -1, null,
- null, null, null);
- }
-
- public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
- final int visible, final int parameter, final String desc) {
- this(Opcodes.ASM6, sa, elementName, visible, desc, null, parameter, -1,
- null, null, null, null);
- }
-
- public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
- final int visible, final String name, final String desc,
- final int typeRef, final TypePath typePath) {
- this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, typeRef,
- typePath, null, null, null);
- }
-
- public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
- final int visible, final String name, final String desc,
- int typeRef, TypePath typePath, final String[] start,
- final String[] end, final int[] index) {
- this(Opcodes.ASM6, sa, elementName, visible, desc, name, -1, typeRef,
- typePath, start, end, index);
- }
-
- protected SAXAnnotationAdapter(final int api, final SAXAdapter sa,
- final String elementName, final int visible, final String desc,
- final String name, final int parameter) {
- this(api, sa, elementName, visible, desc, name, parameter, -1, null,
- null, null, null);
- }
-
- protected SAXAnnotationAdapter(final int api, final SAXAdapter sa,
- final String elementName, final int visible, final String desc,
- final String name, final int parameter, final int typeRef,
- final TypePath typePath, final String[] start, final String[] end,
- final int[] index) {
- super(api);
- this.sa = sa;
- this.elementName = elementName;
-
- AttributesImpl att = new AttributesImpl();
- if (name != null) {
- att.addAttribute("", "name", "name", "", name);
- }
- if (visible != 0) {
- att.addAttribute("", "visible", "visible", "", visible > 0 ? "true"
- : "false");
- }
- if (parameter != -1) {
- att.addAttribute("", "parameter", "parameter", "",
- Integer.toString(parameter));
- }
- if (desc != null) {
- att.addAttribute("", "desc", "desc", "", desc);
- }
- if (typeRef != -1) {
- att.addAttribute("", "typeRef", "typeRef", "",
- Integer.toString(typeRef));
- }
- if (typePath != null) {
- att.addAttribute("", "typePath", "typePath", "",
- typePath.toString());
- }
- if (start != null) {
- StringBuilder value = new StringBuilder(start[0]);
- for (int i = 1; i < start.length; ++i) {
- value.append(" ").append(start[i]);
- }
- att.addAttribute("", "start", "start", "", value.toString());
- }
- if (end != null) {
- StringBuilder value = new StringBuilder(end[0]);
- for (int i = 1; i < end.length; ++i) {
- value.append(" ").append(end[i]);
- }
- att.addAttribute("", "end", "end", "", value.toString());
- }
- if (index != null) {
- StringBuilder value = new StringBuilder();
- value.append(index[0]);
- for (int i = 1; i < index.length; ++i) {
- value.append(" ").append(index[i]);
- }
- att.addAttribute("", "index", "index", "", value.toString());
- }
-
- sa.addStart(elementName, att);
- }
-
- @Override
- public void visit(final String name, final Object value) {
- Class<?> c = value.getClass();
- if (c.isArray()) {
- AnnotationVisitor av = visitArray(name);
- if (value instanceof byte[]) {
- byte[] b = (byte[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof char[]) {
- char[] b = (char[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof short[]) {
- short[] b = (short[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof boolean[]) {
- boolean[] b = (boolean[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, Boolean.valueOf(b[i]));
- }
-
- } else if (value instanceof int[]) {
- int[] b = (int[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof long[]) {
- long[] b = (long[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof float[]) {
- float[] b = (float[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- } else if (value instanceof double[]) {
- double[] b = (double[]) value;
- for (int i = 0; i < b.length; i++) {
- av.visit(null, b[i]);
- }
-
- }
- av.visitEnd();
- } else {
- addValueElement("annotationValue", name, Type.getDescriptor(c),
- value.toString());
- }
- }
-
- @Override
- public void visitEnum(final String name, final String desc,
- final String value) {
- addValueElement("annotationValueEnum", name, desc, value);
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(final String name,
- final String desc) {
- return new SAXAnnotationAdapter(sa, "annotationValueAnnotation", 0,
- name, desc);
- }
-
- @Override
- public AnnotationVisitor visitArray(final String name) {
- return new SAXAnnotationAdapter(sa, "annotationValueArray", 0, name,
- null);
- }
-
- @Override
- public void visitEnd() {
- sa.addEnd(elementName);
- }
-
- private void addValueElement(final String element, final String name,
- final String desc, final String value) {
- AttributesImpl att = new AttributesImpl();
- if (name != null) {
- att.addAttribute("", "name", "name", "", name);
- }
- if (desc != null) {
- att.addAttribute("", "desc", "desc", "", desc);
- }
- if (value != null) {
- att.addAttribute("", "value", "value", "",
- SAXClassAdapter.encode(value));
- }
-
- sa.addElement(element, att);
- }
-}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXClassAdapter.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXClassAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXClassAdapter.java
deleted file mode 100644
index 8e41508..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXClassAdapter.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor;
-import org.apache.tapestry5.internal.plastic.asm.ClassVisitor;
-import org.apache.tapestry5.internal.plastic.asm.FieldVisitor;
-import org.apache.tapestry5.internal.plastic.asm.MethodVisitor;
-import org.apache.tapestry5.internal.plastic.asm.ModuleVisitor;
-import org.apache.tapestry5.internal.plastic.asm.Opcodes;
-import org.apache.tapestry5.internal.plastic.asm.TypePath;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * A {@link org.objectweb.asm.ClassVisitor ClassVisitor} that generates SAX 2.0
- * events from the visited class. It can feed any kind of
- * {@link org.xml.sax.ContentHandler ContentHandler}, e.g. XML serializer, XSLT
- * or XQuery engines.
- *
- * @see org.objectweb.asm.xml.Processor
- * @see org.objectweb.asm.xml.ASMContentHandler
- *
- * @author Eugene Kuleshov
- */
-public final class SAXClassAdapter extends ClassVisitor {
-
- SAXAdapter sa;
-
- private final boolean singleDocument;
-
- /**
- * Pseudo access flag used to distinguish class access flags.
- */
- private static final int ACCESS_CLASS = 262144;
-
- /**
- * Pseudo access flag used to distinguish field access flags.
- */
- private static final int ACCESS_FIELD = 524288;
-
- /**
- * Pseudo access flag used to distinguish inner class flags.
- */
- private static final int ACCESS_INNER = 1048576;
-
- /**
- * Pseudo access flag used to distinguish module flags.
- */
- static final int ACCESS_MODULE = 2097152;
-
- /**
- * Pseudo access flag used to distinguish module requires flags.
- */
- static final int ACCESS_MODULE_REQUIRES = 4194304;
-
- /**
- * Constructs a new {@link SAXClassAdapter SAXClassAdapter} object.
- *
- * @param h
- * content handler that will be used to send SAX 2.0 events.
- * @param singleDocument
- * if <tt>true</tt> adapter will not produce
- * {@link ContentHandler#startDocument() startDocument()} and
- * {@link ContentHandler#endDocument() endDocument()} events.
- */
- public SAXClassAdapter(final ContentHandler h, boolean singleDocument) {
- super(Opcodes.ASM6);
- this.sa = new SAXAdapter(h);
- this.singleDocument = singleDocument;
- if (!singleDocument) {
- sa.addDocumentStart();
- }
- }
-
- @Override
- public void visitSource(final String source, final String debug) {
- AttributesImpl att = new AttributesImpl();
- if (source != null) {
- att.addAttribute("", "file", "file", "", encode(source));
- }
- if (debug != null) {
- att.addAttribute("", "debug", "debug", "", encode(debug));
- }
-
- sa.addElement("source", att);
- }
-
- @Override
- public ModuleVisitor visitModule(final String name, final int access,
- final String version) {
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "name", "name", "", name);
- StringBuilder sb = new StringBuilder();
- appendAccess(access | ACCESS_MODULE, sb);
- att.addAttribute("", "access", "access", "", sb.toString());
- if (version != null) {
- att.addAttribute("", "version", "version", "", encode(version));
- }
- sa.addStart("module", att);
- return new SAXModuleAdapter(sa);
- }
-
- @Override
- public void visitOuterClass(final String owner, final String name,
- final String desc) {
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "owner", "owner", "", owner);
- if (name != null) {
- att.addAttribute("", "name", "name", "", name);
- }
- if (desc != null) {
- att.addAttribute("", "desc", "desc", "", desc);
- }
-
- sa.addElement("outerclass", att);
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(final String desc,
- final boolean visible) {
- return new SAXAnnotationAdapter(sa, "annotation", visible ? 1 : -1,
- null, desc);
- }
-
- @Override
- public AnnotationVisitor visitTypeAnnotation(int typeRef,
- TypePath typePath, String desc, boolean visible) {
- return new SAXAnnotationAdapter(sa, "typeAnnotation", visible ? 1 : -1,
- null, desc, typeRef, typePath);
- }
-
- @Override
- public void visit(final int version, final int access, final String name,
- final String signature, final String superName,
- final String[] interfaces) {
- StringBuilder sb = new StringBuilder();
- appendAccess(access | ACCESS_CLASS, sb);
-
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "access", "access", "", sb.toString());
- if (name != null) {
- att.addAttribute("", "name", "name", "", name);
- }
- if (signature != null) {
- att.addAttribute("", "signature", "signature", "",
- encode(signature));
- }
- if (superName != null) {
- att.addAttribute("", "parent", "parent", "", superName);
- }
- att.addAttribute("", "major", "major", "",
- Integer.toString(version & 0xFFFF));
- att.addAttribute("", "minor", "minor", "",
- Integer.toString(version >>> 16));
- sa.addStart("class", att);
-
- sa.addStart("interfaces", new AttributesImpl());
- if (interfaces != null && interfaces.length > 0) {
- for (int i = 0; i < interfaces.length; i++) {
- AttributesImpl att2 = new AttributesImpl();
- att2.addAttribute("", "name", "name", "", interfaces[i]);
- sa.addElement("interface", att2);
- }
- }
- sa.addEnd("interfaces");
- }
-
- @Override
- public FieldVisitor visitField(final int access, final String name,
- final String desc, final String signature, final Object value) {
- StringBuilder sb = new StringBuilder();
- appendAccess(access | ACCESS_FIELD, sb);
-
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "access", "access", "", sb.toString());
- att.addAttribute("", "name", "name", "", name);
- att.addAttribute("", "desc", "desc", "", desc);
- if (signature != null) {
- att.addAttribute("", "signature", "signature", "",
- encode(signature));
- }
- if (value != null) {
- att.addAttribute("", "value", "value", "", encode(value.toString()));
- }
-
- return new SAXFieldAdapter(sa, att);
- }
-
- @Override
- public MethodVisitor visitMethod(final int access, final String name,
- final String desc, final String signature, final String[] exceptions) {
- StringBuilder sb = new StringBuilder();
- appendAccess(access, sb);
-
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "access", "access", "", sb.toString());
- att.addAttribute("", "name", "name", "", name);
- att.addAttribute("", "desc", "desc", "", desc);
- if (signature != null) {
- att.addAttribute("", "signature", "signature", "", signature);
- }
- sa.addStart("method", att);
-
- sa.addStart("exceptions", new AttributesImpl());
- if (exceptions != null && exceptions.length > 0) {
- for (int i = 0; i < exceptions.length; i++) {
- AttributesImpl att2 = new AttributesImpl();
- att2.addAttribute("", "name", "name", "", exceptions[i]);
- sa.addElement("exception", att2);
- }
- }
- sa.addEnd("exceptions");
-
- return new SAXCodeAdapter(sa, access);
- }
-
- @Override
- public final void visitInnerClass(final String name,
- final String outerName, final String innerName, final int access) {
- StringBuilder sb = new StringBuilder();
- appendAccess(access | ACCESS_INNER, sb);
-
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "access", "access", "", sb.toString());
- if (name != null) {
- att.addAttribute("", "name", "name", "", name);
- }
- if (outerName != null) {
- att.addAttribute("", "outerName", "outerName", "", outerName);
- }
- if (innerName != null) {
- att.addAttribute("", "innerName", "innerName", "", innerName);
- }
- sa.addElement("innerclass", att);
- }
-
- @Override
- public final void visitEnd() {
- sa.addEnd("class");
- if (!singleDocument) {
- sa.addDocumentEnd();
- }
- }
-
- static final String encode(final String s) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < s.length(); i++) {
- char c = s.charAt(i);
- if (c == '\\') {
- sb.append("\\\\");
- } else if (c < 0x20 || c > 0x7f) {
- sb.append("\\u");
- if (c < 0x10) {
- sb.append("000");
- } else if (c < 0x100) {
- sb.append("00");
- } else if (c < 0x1000) {
- sb.append('0');
- }
- sb.append(Integer.toString(c, 16));
- } else {
- sb.append(c);
- }
- }
- return sb.toString();
- }
-
- static void appendAccess(final int access, final StringBuilder sb) {
- if ((access & Opcodes.ACC_PUBLIC) != 0) {
- sb.append("public ");
- }
- if ((access & Opcodes.ACC_PRIVATE) != 0) {
- sb.append("private ");
- }
- if ((access & Opcodes.ACC_PROTECTED) != 0) {
- sb.append("protected ");
- }
- if ((access & Opcodes.ACC_FINAL) != 0) {
- if ((access & ACCESS_MODULE) == 0) {
- sb.append("final ");
- } else {
- sb.append("transitive ");
- }
- }
- if ((access & Opcodes.ACC_STATIC) != 0) {
- sb.append("static ");
- }
- if ((access & Opcodes.ACC_SUPER) != 0) {
- if ((access & ACCESS_CLASS) == 0) {
- if ((access & ACCESS_MODULE_REQUIRES) != 0) {
- sb.append("transitive ");
- } else {
- if ((access & ACCESS_MODULE) == 0) {
- sb.append("synchronized ");
- } else {
- sb.append("open ");
- }
- }
- } else {
- sb.append("super ");
- }
- }
- if ((access & Opcodes.ACC_VOLATILE) != 0) {
- if ((access & ACCESS_FIELD) == 0) {
- sb.append("bridge ");
- } else {
- if ((access & ACCESS_MODULE_REQUIRES) == 0) {
- sb.append("volatile ");
- } else {
- sb.append("static ");
- }
- }
- }
- if ((access & Opcodes.ACC_TRANSIENT) != 0) {
- if ((access & ACCESS_FIELD) == 0) {
- sb.append("varargs ");
- } else {
- sb.append("transient ");
- }
- }
- if ((access & Opcodes.ACC_NATIVE) != 0) {
- sb.append("native ");
- }
- if ((access & Opcodes.ACC_STRICT) != 0) {
- sb.append("strict ");
- }
- if ((access & Opcodes.ACC_INTERFACE) != 0) {
- sb.append("interface ");
- }
- if ((access & Opcodes.ACC_ABSTRACT) != 0) {
- sb.append("abstract ");
- }
- if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
- sb.append("synthetic ");
- }
- if ((access & Opcodes.ACC_ANNOTATION) != 0) {
- sb.append("annotation ");
- }
- if ((access & Opcodes.ACC_ENUM) != 0) {
- sb.append("enum ");
- }
- if ((access & Opcodes.ACC_DEPRECATED) != 0) {
- sb.append("deprecated ");
- }
- if ((access & Opcodes.ACC_MANDATED) != 0) {
- if ((access & ACCESS_CLASS) == 0) {
- sb.append("module ");
- } else {
- sb.append("mandated ");
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXCodeAdapter.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXCodeAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXCodeAdapter.java
deleted file mode 100644
index 3b96007..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXCodeAdapter.java
+++ /dev/null
@@ -1,415 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor;
-import org.apache.tapestry5.internal.plastic.asm.Handle;
-import org.apache.tapestry5.internal.plastic.asm.Label;
-import org.apache.tapestry5.internal.plastic.asm.MethodVisitor;
-import org.apache.tapestry5.internal.plastic.asm.Opcodes;
-import org.apache.tapestry5.internal.plastic.asm.Type;
-import org.apache.tapestry5.internal.plastic.asm.TypePath;
-import org.apache.tapestry5.internal.plastic.asm.util.Printer;
-import org.xml.sax.helpers.AttributesImpl;
-
-/**
- * A {@link MethodVisitor} that generates SAX 2.0 events from the visited
- * method.
- *
- * @see org.objectweb.asm.xml.SAXClassAdapter
- * @see org.objectweb.asm.xml.Processor
- *
- * @author Eugene Kuleshov
- */
-public final class SAXCodeAdapter extends MethodVisitor {
-
- static final String[] TYPES = { "top", "int", "float", "double", "long",
- "null", "uninitializedThis" };
-
- SAXAdapter sa;
-
- int access;
-
- private final Map<Label, String> labelNames;
-
- /**
- * Constructs a new {@link SAXCodeAdapter SAXCodeAdapter} object.
- *
- * @param sa
- * content handler that will be used to send SAX 2.0 events.
- */
- public SAXCodeAdapter(final SAXAdapter sa, final int access) {
- super(Opcodes.ASM6);
- this.sa = sa;
- this.access = access;
- this.labelNames = new HashMap<Label, String>();
- }
-
- @Override
- public void visitParameter(String name, int access) {
- AttributesImpl attrs = new AttributesImpl();
- if (name != null) {
- attrs.addAttribute("", "name", "name", "", name);
- }
- StringBuilder sb = new StringBuilder();
- SAXClassAdapter.appendAccess(access, sb);
- attrs.addAttribute("", "access", "access", "", sb.toString());
- sa.addElement("parameter", attrs);
- }
-
- @Override
- public final void visitCode() {
- if ((access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_INTERFACE | Opcodes.ACC_NATIVE)) == 0) {
- sa.addStart("code", new AttributesImpl());
- }
- }
-
- @Override
- public void visitFrame(final int type, final int nLocal,
- final Object[] local, final int nStack, final Object[] stack) {
- AttributesImpl attrs = new AttributesImpl();
- switch (type) {
- case Opcodes.F_NEW:
- case Opcodes.F_FULL:
- if (type == Opcodes.F_NEW) {
- attrs.addAttribute("", "type", "type", "", "NEW");
- } else {
- attrs.addAttribute("", "type", "type", "", "FULL");
- }
- sa.addStart("frame", attrs);
- appendFrameTypes(true, nLocal, local);
- appendFrameTypes(false, nStack, stack);
- break;
- case Opcodes.F_APPEND:
- attrs.addAttribute("", "type", "type", "", "APPEND");
- sa.addStart("frame", attrs);
- appendFrameTypes(true, nLocal, local);
- break;
- case Opcodes.F_CHOP:
- attrs.addAttribute("", "type", "type", "", "CHOP");
- attrs.addAttribute("", "count", "count", "",
- Integer.toString(nLocal));
- sa.addStart("frame", attrs);
- break;
- case Opcodes.F_SAME:
- attrs.addAttribute("", "type", "type", "", "SAME");
- sa.addStart("frame", attrs);
- break;
- case Opcodes.F_SAME1:
- attrs.addAttribute("", "type", "type", "", "SAME1");
- sa.addStart("frame", attrs);
- appendFrameTypes(false, 1, stack);
- break;
- }
- sa.addEnd("frame");
- }
-
- private void appendFrameTypes(final boolean local, final int n,
- final Object[] types) {
- for (int i = 0; i < n; ++i) {
- Object type = types[i];
- AttributesImpl attrs = new AttributesImpl();
- if (type instanceof String) {
- attrs.addAttribute("", "type", "type", "", (String) type);
- } else if (type instanceof Integer) {
- attrs.addAttribute("", "type", "type", "",
- TYPES[((Integer) type).intValue()]);
- } else {
- attrs.addAttribute("", "type", "type", "", "uninitialized");
- attrs.addAttribute("", "label", "label", "",
- getLabel((Label) type));
- }
- sa.addElement(local ? "local" : "stack", attrs);
- }
- }
-
- @Override
- public final void visitInsn(final int opcode) {
- sa.addElement(Printer.OPCODES[opcode], new AttributesImpl());
- }
-
- @Override
- public final void visitIntInsn(final int opcode, final int operand) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "value", "value", "", Integer.toString(operand));
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public final void visitVarInsn(final int opcode, final int var) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "var", "var", "", Integer.toString(var));
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public final void visitTypeInsn(final int opcode, final String type) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "desc", "desc", "", type);
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public final void visitFieldInsn(final int opcode, final String owner,
- final String name, final String desc) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "owner", "owner", "", owner);
- attrs.addAttribute("", "name", "name", "", name);
- attrs.addAttribute("", "desc", "desc", "", desc);
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public final void visitMethodInsn(final int opcode, final String owner,
- final String name, final String desc, final boolean itf) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "owner", "owner", "", owner);
- attrs.addAttribute("", "name", "name", "", name);
- attrs.addAttribute("", "desc", "desc", "", desc);
- attrs.addAttribute("", "itf", "itf", "", itf ? "true" : "false");
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public void visitInvokeDynamicInsn(String name, String desc, Handle bsm,
- Object... bsmArgs) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "name", "name", "", name);
- attrs.addAttribute("", "desc", "desc", "", desc);
- attrs.addAttribute("", "bsm", "bsm", "",
- SAXClassAdapter.encode(bsm.toString()));
- sa.addStart("INVOKEDYNAMIC", attrs);
- for (int i = 0; i < bsmArgs.length; i++) {
- sa.addElement("bsmArg", getConstantAttribute(bsmArgs[i]));
- }
- sa.addEnd("INVOKEDYNAMIC");
- }
-
- @Override
- public final void visitJumpInsn(final int opcode, final Label label) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "label", "label", "", getLabel(label));
- sa.addElement(Printer.OPCODES[opcode], attrs);
- }
-
- @Override
- public final void visitLabel(final Label label) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "name", "name", "", getLabel(label));
- sa.addElement("Label", attrs);
- }
-
- @Override
- public final void visitLdcInsn(final Object cst) {
- sa.addElement(Printer.OPCODES[Opcodes.LDC], getConstantAttribute(cst));
- }
-
- private static AttributesImpl getConstantAttribute(final Object cst) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "cst", "cst", "",
- SAXClassAdapter.encode(cst.toString()));
- attrs.addAttribute("", "desc", "desc", "",
- Type.getDescriptor(cst.getClass()));
- return attrs;
- }
-
- @Override
- public final void visitIincInsn(final int var, final int increment) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "var", "var", "", Integer.toString(var));
- attrs.addAttribute("", "inc", "inc", "", Integer.toString(increment));
- sa.addElement(Printer.OPCODES[Opcodes.IINC], attrs);
- }
-
- @Override
- public final void visitTableSwitchInsn(final int min, final int max,
- final Label dflt, final Label... labels) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "min", "min", "", Integer.toString(min));
- attrs.addAttribute("", "max", "max", "", Integer.toString(max));
- attrs.addAttribute("", "dflt", "dflt", "", getLabel(dflt));
- String o = Printer.OPCODES[Opcodes.TABLESWITCH];
- sa.addStart(o, attrs);
- for (int i = 0; i < labels.length; i++) {
- AttributesImpl att2 = new AttributesImpl();
- att2.addAttribute("", "name", "name", "", getLabel(labels[i]));
- sa.addElement("label", att2);
- }
- sa.addEnd(o);
- }
-
- @Override
- public final void visitLookupSwitchInsn(final Label dflt, final int[] keys,
- final Label[] labels) {
- AttributesImpl att = new AttributesImpl();
- att.addAttribute("", "dflt", "dflt", "", getLabel(dflt));
- String o = Printer.OPCODES[Opcodes.LOOKUPSWITCH];
- sa.addStart(o, att);
- for (int i = 0; i < labels.length; i++) {
- AttributesImpl att2 = new AttributesImpl();
- att2.addAttribute("", "name", "name", "", getLabel(labels[i]));
- att2.addAttribute("", "key", "key", "", Integer.toString(keys[i]));
- sa.addElement("label", att2);
- }
- sa.addEnd(o);
- }
-
- @Override
- public final void visitMultiANewArrayInsn(final String desc, final int dims) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "desc", "desc", "", desc);
- attrs.addAttribute("", "dims", "dims", "", Integer.toString(dims));
- sa.addElement(Printer.OPCODES[Opcodes.MULTIANEWARRAY], attrs);
- }
-
- @Override
- public final void visitTryCatchBlock(final Label start, final Label end,
- final Label handler, final String type) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "start", "start", "", getLabel(start));
- attrs.addAttribute("", "end", "end", "", getLabel(end));
- attrs.addAttribute("", "handler", "handler", "", getLabel(handler));
- if (type != null) {
- attrs.addAttribute("", "type", "type", "", type);
- }
- sa.addElement("TryCatch", attrs);
- }
-
- @Override
- public final void visitMaxs(final int maxStack, final int maxLocals) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "maxStack", "maxStack", "",
- Integer.toString(maxStack));
- attrs.addAttribute("", "maxLocals", "maxLocals", "",
- Integer.toString(maxLocals));
- sa.addElement("Max", attrs);
-
- sa.addEnd("code");
- }
-
- @Override
- public void visitLocalVariable(final String name, final String desc,
- final String signature, final Label start, final Label end,
- final int index) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "name", "name", "", name);
- attrs.addAttribute("", "desc", "desc", "", desc);
- if (signature != null) {
- attrs.addAttribute("", "signature", "signature", "",
- SAXClassAdapter.encode(signature));
- }
- attrs.addAttribute("", "start", "start", "", getLabel(start));
- attrs.addAttribute("", "end", "end", "", getLabel(end));
- attrs.addAttribute("", "var", "var", "", Integer.toString(index));
- sa.addElement("LocalVar", attrs);
- }
-
- @Override
- public final void visitLineNumber(final int line, final Label start) {
- AttributesImpl attrs = new AttributesImpl();
- attrs.addAttribute("", "line", "line", "", Integer.toString(line));
- attrs.addAttribute("", "start", "start", "", getLabel(start));
- sa.addElement("LineNumber", attrs);
- }
-
- @Override
- public AnnotationVisitor visitAnnotationDefault() {
- return new SAXAnnotationAdapter(sa, "annotationDefault", 0, null, null);
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(final String desc,
- final boolean visible) {
- return new SAXAnnotationAdapter(sa, "annotation", visible ? 1 : -1,
- null, desc);
- }
-
- @Override
- public AnnotationVisitor visitTypeAnnotation(int typeRef,
- TypePath typePath, String desc, boolean visible) {
- return new SAXAnnotationAdapter(sa, "typeAnnotation", visible ? 1 : -1,
- null, desc, typeRef, typePath);
- }
-
- @Override
- public AnnotationVisitor visitParameterAnnotation(final int parameter,
- final String desc, final boolean visible) {
- return new SAXAnnotationAdapter(sa, "parameterAnnotation", visible ? 1
- : -1, parameter, desc);
- }
-
- @Override
- public AnnotationVisitor visitInsnAnnotation(int typeRef,
- TypePath typePath, String desc, boolean visible) {
- return new SAXAnnotationAdapter(sa, "insnAnnotation", visible ? 1 : -1,
- null, desc, typeRef, typePath);
- }
-
- @Override
- public AnnotationVisitor visitTryCatchAnnotation(int typeRef,
- TypePath typePath, String desc, boolean visible) {
- return new SAXAnnotationAdapter(sa, "tryCatchAnnotation", visible ? 1
- : -1, null, desc, typeRef, typePath);
- }
-
- @Override
- public AnnotationVisitor visitLocalVariableAnnotation(int typeRef,
- TypePath typePath, Label[] start, Label[] end, int[] index,
- String desc, boolean visible) {
- String[] s = new String[start.length];
- String[] e = new String[end.length];
- for (int i = 0; i < s.length; ++i) {
- s[i] = getLabel(start[i]);
- }
- for (int i = 0; i < e.length; ++i) {
- e[i] = getLabel(end[i]);
- }
- return new SAXAnnotationAdapter(sa, "localVariableAnnotation",
- visible ? 1 : -1, null, desc, typeRef, typePath, s, e, index);
- }
-
- @Override
- public void visitEnd() {
- sa.addEnd("method");
- }
-
- private final String getLabel(final Label label) {
- String name = labelNames.get(label);
- if (name == null) {
- name = Integer.toString(labelNames.size());
- labelNames.put(label, name);
- }
- return name;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/1c71aec7/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXFieldAdapter.java
----------------------------------------------------------------------
diff --git a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXFieldAdapter.java b/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXFieldAdapter.java
deleted file mode 100644
index 7f0b90e..0000000
--- a/plastic/src/external/java/org/apache/tapestry5/internal/plastic/asm/xml/SAXFieldAdapter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/***
- * ASM XML Adapter
- * Copyright (c) 2004-2011, Eugene Kuleshov
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.apache.tapestry5.internal.plastic.asm.xml;
-
-import org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor;
-import org.apache.tapestry5.internal.plastic.asm.FieldVisitor;
-import org.apache.tapestry5.internal.plastic.asm.Opcodes;
-import org.apache.tapestry5.internal.plastic.asm.TypePath;
-import org.xml.sax.Attributes;
-
-/**
- * SAXFieldAdapter
- *
- * @author Eugene Kuleshov
- */
-public final class SAXFieldAdapter extends FieldVisitor {
-
- SAXAdapter sa;
-
- public SAXFieldAdapter(final SAXAdapter sa, final Attributes att) {
- super(Opcodes.ASM6);
- this.sa = sa;
- sa.addStart("field", att);
- }
-
- @Override
- public AnnotationVisitor visitAnnotation(final String desc,
- final boolean visible) {
- return new SAXAnnotationAdapter(sa, "annotation", visible ? 1 : -1,
- null, desc);
- }
-
- @Override
- public AnnotationVisitor visitTypeAnnotation(int typeRef,
- TypePath typePath, String desc, boolean visible) {
- return new SAXAnnotationAdapter(sa, "typeAnnotation", visible ? 1 : -1,
- null, desc, typeRef, typePath);
- }
-
- @Override
- public void visitEnd() {
- sa.addEnd("field");
- }
-}