mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-03 16:49:10 +00:00
Removed useless ASM files (not used by parabot)
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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.objectweb.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);
|
||||
}
|
||||
}
|
||||
@@ -1,185 +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.objectweb.asm.xml;
|
||||
|
||||
import org.objectweb.asm.AnnotationVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.Type;
|
||||
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.ASM4, sa, elementName, visible, desc, name, -1);
|
||||
}
|
||||
|
||||
public SAXAnnotationAdapter(final SAXAdapter sa, final String elementName,
|
||||
final int visible, final int parameter, final String desc) {
|
||||
this(Opcodes.ASM4, sa, elementName, visible, desc, null, parameter);
|
||||
}
|
||||
|
||||
protected SAXAnnotationAdapter(final int api, final SAXAdapter sa,
|
||||
final String elementName, final int visible, final String desc,
|
||||
final String name, final int parameter) {
|
||||
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);
|
||||
}
|
||||
|
||||
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, new Byte(b[i]));
|
||||
}
|
||||
|
||||
} else if (value instanceof char[]) {
|
||||
char[] b = (char[]) value;
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
av.visit(null, new Character(b[i]));
|
||||
}
|
||||
|
||||
} else if (value instanceof short[]) {
|
||||
short[] b = (short[]) value;
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
av.visit(null, new Short(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, new Integer(b[i]));
|
||||
}
|
||||
|
||||
} else if (value instanceof long[]) {
|
||||
long[] b = (long[]) value;
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
av.visit(null, new Long(b[i]));
|
||||
}
|
||||
|
||||
} else if (value instanceof float[]) {
|
||||
float[] b = (float[]) value;
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
av.visit(null, new Float(b[i]));
|
||||
}
|
||||
|
||||
} else if (value instanceof double[]) {
|
||||
double[] b = (double[]) value;
|
||||
for (int i = 0; i < b.length; i++) {
|
||||
av.visit(null, new Double(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);
|
||||
}
|
||||
}
|
||||
@@ -1,324 +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.objectweb.asm.xml;
|
||||
|
||||
import org.objectweb.asm.AnnotationVisitor;
|
||||
import org.objectweb.asm.ClassVisitor;
|
||||
import org.objectweb.asm.FieldVisitor;
|
||||
import org.objectweb.asm.MethodVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
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 Processor
|
||||
* @see 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;
|
||||
|
||||
/**
|
||||
* Constructs a new {@link org.objectweb.asm.xml.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 org.xml.sax.ContentHandler#startDocument() startDocument()} and
|
||||
* {@link org.xml.sax.ContentHandler#endDocument() endDocument()} events.
|
||||
*/
|
||||
public SAXClassAdapter(final ContentHandler h, boolean singleDocument) {
|
||||
super(Opcodes.ASM4);
|
||||
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 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 void visit(final int version, final int access, final String name,
|
||||
final String signature, final String superName,
|
||||
final String[] interfaces) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
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) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
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) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
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) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
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) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
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 StringBuffer 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) {
|
||||
sb.append("final ");
|
||||
}
|
||||
if ((access & Opcodes.ACC_STATIC) != 0) {
|
||||
sb.append("static ");
|
||||
}
|
||||
if ((access & Opcodes.ACC_SUPER) != 0) {
|
||||
if ((access & ACCESS_CLASS) == 0) {
|
||||
sb.append("synchronized ");
|
||||
} else {
|
||||
sb.append("super ");
|
||||
}
|
||||
}
|
||||
if ((access & Opcodes.ACC_VOLATILE) != 0) {
|
||||
if ((access & ACCESS_FIELD) == 0) {
|
||||
sb.append("bridge ");
|
||||
} else {
|
||||
sb.append("volatile ");
|
||||
}
|
||||
}
|
||||
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 ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,362 +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.objectweb.asm.xml;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.objectweb.asm.AnnotationVisitor;
|
||||
import org.objectweb.asm.Handle;
|
||||
import org.objectweb.asm.Label;
|
||||
import org.objectweb.asm.MethodVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.Type;
|
||||
import org.objectweb.asm.util.Printer;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
/**
|
||||
* A {@link org.objectweb.asm.MethodVisitor} that generates SAX 2.0 events from the visited
|
||||
* method.
|
||||
*
|
||||
* @see SAXClassAdapter
|
||||
* @see Processor
|
||||
*
|
||||
* @author Eugene Kuleshov
|
||||
*/
|
||||
public final class SAXCodeAdapter extends MethodVisitor {
|
||||
|
||||
static final String[] TYPES = { "top", "int", "float", "double", "long",
|
||||
"null", "uninitializedThis" };
|
||||
|
||||
SAXAdapter sa;
|
||||
|
||||
private final Map<Label, String> labelNames;
|
||||
|
||||
/**
|
||||
* Constructs a new {@link org.objectweb.asm.xml.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.ASM4);
|
||||
this.sa = sa;
|
||||
this.labelNames = new HashMap<Label, String>();
|
||||
|
||||
if ((access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_INTERFACE | Opcodes.ACC_NATIVE)) == 0) {
|
||||
sa.addStart("code", new AttributesImpl());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void visitCode() {
|
||||
}
|
||||
|
||||
@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) {
|
||||
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 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 visitParameterAnnotation(final int parameter,
|
||||
final String desc, final boolean visible) {
|
||||
return new SAXAnnotationAdapter(sa, "parameterAnnotation", visible ? 1
|
||||
: -1, parameter, desc);
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,63 +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.objectweb.asm.xml;
|
||||
|
||||
import org.objectweb.asm.AnnotationVisitor;
|
||||
import org.objectweb.asm.FieldVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
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.ASM4);
|
||||
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 void visitEnd() {
|
||||
sa.addEnd("field");
|
||||
}
|
||||
}
|
||||
@@ -1,349 +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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This DTD must be used to create XML documents to be processed by
|
||||
org.objectweb.asm.xml.ASMContentHandler
|
||||
-->
|
||||
|
||||
<!--
|
||||
Root element used to aggregate multiple classes into single document.
|
||||
-->
|
||||
<!ELEMENT classes ( class+ )>
|
||||
|
||||
<!--
|
||||
Root element for a single class.
|
||||
-->
|
||||
<!ELEMENT class ( interfaces, ( field | innerclass | method )*)>
|
||||
<!ATTLIST class access CDATA #REQUIRED>
|
||||
<!ATTLIST class name CDATA #REQUIRED>
|
||||
<!ATTLIST class parent CDATA #REQUIRED>
|
||||
<!ATTLIST class major CDATA #REQUIRED>
|
||||
<!ATTLIST class minor CDATA #REQUIRED>
|
||||
<!ATTLIST class source CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT interfaces ( interface* )>
|
||||
<!ELEMENT interface EMPTY>
|
||||
<!ATTLIST interface name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT field EMPTY>
|
||||
<!ATTLIST field access CDATA #REQUIRED>
|
||||
<!ATTLIST field desc CDATA #REQUIRED>
|
||||
<!ATTLIST field name CDATA #REQUIRED>
|
||||
<!--
|
||||
All characters out of interval 0x20 to 0x7f (inclusive) must
|
||||
be encoded (\uXXXX) and character '\' must be replaced by "\\"
|
||||
-->
|
||||
<!ATTLIST field value CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT innerclass EMPTY>
|
||||
<!ATTLIST innerclass access CDATA #REQUIRED>
|
||||
<!ATTLIST innerclass innerName CDATA #IMPLIED>
|
||||
<!ATTLIST innerclass name CDATA #REQUIRED>
|
||||
<!ATTLIST innerclass outerName CDATA #IMPLIED>
|
||||
|
||||
<!--
|
||||
Root element for method definition.
|
||||
-->
|
||||
<!ELEMENT method ( exceptions, code? )>
|
||||
<!ATTLIST method access CDATA #REQUIRED>
|
||||
<!ATTLIST method desc CDATA #REQUIRED>
|
||||
<!ATTLIST method name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT exceptions ( exception* )>
|
||||
<!ELEMENT exception EMPTY>
|
||||
<!ATTLIST exception name CDATA #REQUIRED>
|
||||
|
||||
<!--
|
||||
code element contains bytecode instructions and definitions for labels, line numbers, try/catch and max
|
||||
-->
|
||||
<!ELEMENT code (( AALOAD | AASTORE | ACONST_NULL | ALOAD | ANEWARRAY | ARETURN | ARRAYLENGTH | ASTORE | ATHROW | BALOAD | BASTORE | BIPUSH | CALOAD | CASTORE | CHECKCAST | D2F | D2I | D2L | DADD | DALOAD | DASTORE | DCMPG | DCMPL | DCONST_0 | DCONST_1 | DDIV | DLOAD | DMUL | DNEG | DREM | DRETURN | DSTORE | DSUB | DUP | DUP2 | DUP2_X1 | DUP2_X2 | DUP_X1 | DUP_X2 | SWAP | F2D | F2I | F2L | FADD | FALOAD | FASTORE | FCMPG | FCMPL | FCONST_0 | FCONST_1 | FCONST_2 | FDIV | FLOAD | FMUL | FNEG | FREM | FRETURN | FSTORE | FSUB | GETFIELD | GETSTATIC | GOTO | I2B | I2C | I2D | I2F | I2L | I2S | IADD | IALOAD | IAND | IASTORE | ICONST_0 | ICONST_1 | ICONST_2 | ICONST_3 | ICONST_4 | ICONST_5 | ICONST_M1 | IDIV | IFEQ | IFGE | IFGT | IFLE | IFLT | IFNE | IFNONNULL | IFNULL | IF_ACMPEQ | IF_ACMPNE | IF_ICMPEQ | IF_ICMPGE | IF_ICMPGT | IF_ICMPLE | IF_ICMPLT | IF_ICMPNE | IINC | ILOAD | IMUL | INEG | INSTANCEOF | INVOKEINTERFACE | INVOKESPECIAL | INVOKESTATIC | INVOKEVIRTUAL | IOR | IREM | IRETURN | ISHL | ISHR | ISTORE | ISUB | IUSHR | IXOR | JSR | L2D | L2F | L2I | LADD | LALOAD | LAND | LASTORE | LCMP | LCONST_0 | LCONST_1 | LDC | LDIV | LLOAD | LMUL | LNEG | LOOKUPSWITCH | LOR | LREM | LRETURN | LSHL | LSHR | LSTORE | LSUB | LUSHR | LXOR | MONITORENTER | MONITOREXIT | MULTIANEWARRAY | NEW | NEWARRAY | NOP | POP | POP2 | PUTFIELD | PUTSTATIC | RET | RETURN | SALOAD | SASTORE | SIPUSH | TABLESWITCH | Label | LineNumber | TryCatch )*, Max)>
|
||||
|
||||
<!ELEMENT Label EMPTY>
|
||||
<!ATTLIST Label name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT TryCatch EMPTY>
|
||||
<!ATTLIST TryCatch end CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch handler CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch start CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch type CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT LineNumber EMPTY>
|
||||
<!ATTLIST LineNumber line CDATA #REQUIRED>
|
||||
<!ATTLIST LineNumber start CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT Max EMPTY>
|
||||
<!ATTLIST Max maxLocals CDATA #REQUIRED>
|
||||
<!ATTLIST Max maxStack CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT AALOAD EMPTY>
|
||||
<!ELEMENT AASTORE EMPTY>
|
||||
<!ELEMENT ACONST_NULL EMPTY>
|
||||
<!ELEMENT ALOAD EMPTY>
|
||||
<!ATTLIST ALOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT ANEWARRAY EMPTY>
|
||||
<!ATTLIST ANEWARRAY desc CDATA #REQUIRED>
|
||||
<!ELEMENT ARETURN EMPTY>
|
||||
<!ELEMENT ARRAYLENGTH EMPTY>
|
||||
<!ELEMENT ASTORE EMPTY>
|
||||
<!ATTLIST ASTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT ATHROW EMPTY>
|
||||
<!ELEMENT BALOAD EMPTY>
|
||||
<!ELEMENT BASTORE EMPTY>
|
||||
<!ELEMENT BIPUSH EMPTY>
|
||||
<!ATTLIST BIPUSH value CDATA #REQUIRED>
|
||||
<!ELEMENT CALOAD EMPTY>
|
||||
<!ELEMENT CASTORE EMPTY>
|
||||
<!ELEMENT CHECKCAST EMPTY>
|
||||
<!ATTLIST CHECKCAST desc CDATA #REQUIRED>
|
||||
<!ELEMENT D2F EMPTY>
|
||||
<!ELEMENT D2I EMPTY>
|
||||
<!ELEMENT D2L EMPTY>
|
||||
<!ELEMENT DADD EMPTY>
|
||||
<!ELEMENT DALOAD EMPTY>
|
||||
<!ELEMENT DASTORE EMPTY>
|
||||
<!ELEMENT DCMPG EMPTY>
|
||||
<!ELEMENT DCMPL EMPTY>
|
||||
<!ELEMENT DCONST_0 EMPTY>
|
||||
<!ELEMENT DCONST_1 EMPTY>
|
||||
<!ELEMENT DDIV EMPTY>
|
||||
<!ELEMENT DLOAD EMPTY>
|
||||
<!ATTLIST DLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT DMUL EMPTY>
|
||||
<!ELEMENT DNEG EMPTY>
|
||||
<!ELEMENT DREM EMPTY>
|
||||
<!ELEMENT DRETURN EMPTY>
|
||||
<!ELEMENT DSTORE EMPTY>
|
||||
<!ATTLIST DSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT DSUB EMPTY>
|
||||
<!ELEMENT DUP EMPTY>
|
||||
<!ELEMENT DUP2 EMPTY>
|
||||
<!ELEMENT DUP2_X1 EMPTY>
|
||||
<!ELEMENT DUP2_X2 EMPTY>
|
||||
<!ELEMENT DUP_X1 EMPTY>
|
||||
<!ELEMENT DUP_X2 EMPTY>
|
||||
<!ELEMENT SWAP EMPTY>
|
||||
<!ELEMENT F2D EMPTY>
|
||||
<!ELEMENT F2I EMPTY>
|
||||
<!ELEMENT F2L EMPTY>
|
||||
<!ELEMENT FADD EMPTY>
|
||||
<!ELEMENT FALOAD EMPTY>
|
||||
<!ELEMENT FASTORE EMPTY>
|
||||
<!ELEMENT FCMPG EMPTY>
|
||||
<!ELEMENT FCMPL EMPTY>
|
||||
<!ELEMENT FCONST_0 EMPTY>
|
||||
<!ELEMENT FCONST_1 EMPTY>
|
||||
<!ELEMENT FCONST_2 EMPTY>
|
||||
<!ELEMENT FDIV EMPTY>
|
||||
<!ELEMENT FLOAD EMPTY>
|
||||
<!ATTLIST FLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT FMUL EMPTY>
|
||||
<!ELEMENT FNEG EMPTY>
|
||||
<!ELEMENT FREM EMPTY>
|
||||
<!ELEMENT FRETURN EMPTY>
|
||||
<!ELEMENT FSTORE EMPTY>
|
||||
<!ATTLIST FSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT FSUB EMPTY>
|
||||
<!ELEMENT GETFIELD EMPTY>
|
||||
<!ATTLIST GETFIELD desc CDATA #REQUIRED>
|
||||
<!ATTLIST GETFIELD name CDATA #REQUIRED>
|
||||
<!ATTLIST GETFIELD owner CDATA #REQUIRED>
|
||||
<!ELEMENT GETSTATIC EMPTY>
|
||||
<!ATTLIST GETSTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST GETSTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST GETSTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT GOTO EMPTY>
|
||||
<!ATTLIST GOTO label CDATA #REQUIRED>
|
||||
<!ELEMENT I2B EMPTY>
|
||||
<!ELEMENT I2C EMPTY>
|
||||
<!ELEMENT I2D EMPTY>
|
||||
<!ELEMENT I2F EMPTY>
|
||||
<!ELEMENT I2L EMPTY>
|
||||
<!ELEMENT I2S EMPTY>
|
||||
<!ELEMENT IADD EMPTY>
|
||||
<!ELEMENT IALOAD EMPTY>
|
||||
<!ELEMENT IAND EMPTY>
|
||||
<!ELEMENT IASTORE EMPTY>
|
||||
<!ELEMENT ICONST_0 EMPTY>
|
||||
<!ELEMENT ICONST_1 EMPTY>
|
||||
<!ELEMENT ICONST_2 EMPTY>
|
||||
<!ELEMENT ICONST_3 EMPTY>
|
||||
<!ELEMENT ICONST_4 EMPTY>
|
||||
<!ELEMENT ICONST_5 EMPTY>
|
||||
<!ELEMENT ICONST_M1 EMPTY>
|
||||
<!ELEMENT IDIV EMPTY>
|
||||
<!ELEMENT IFEQ EMPTY>
|
||||
<!ATTLIST IFEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IFGE EMPTY>
|
||||
<!ATTLIST IFGE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFGT EMPTY>
|
||||
<!ATTLIST IFGT label CDATA #REQUIRED>
|
||||
<!ELEMENT IFLE EMPTY>
|
||||
<!ATTLIST IFLE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFLT EMPTY>
|
||||
<!ATTLIST IFLT label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNE EMPTY>
|
||||
<!ATTLIST IFNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNONNULL EMPTY>
|
||||
<!ATTLIST IFNONNULL label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNULL EMPTY>
|
||||
<!ATTLIST IFNULL label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ACMPEQ EMPTY>
|
||||
<!ATTLIST IF_ACMPEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ACMPNE EMPTY>
|
||||
<!ATTLIST IF_ACMPNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPEQ EMPTY>
|
||||
<!ATTLIST IF_ICMPEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPGE EMPTY>
|
||||
<!ATTLIST IF_ICMPGE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPGT EMPTY>
|
||||
<!ATTLIST IF_ICMPGT label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPLE EMPTY>
|
||||
<!ATTLIST IF_ICMPLE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPLT EMPTY>
|
||||
<!ATTLIST IF_ICMPLT label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPNE EMPTY>
|
||||
<!ATTLIST IF_ICMPNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IINC EMPTY>
|
||||
<!ATTLIST IINC inc CDATA #REQUIRED>
|
||||
<!ATTLIST IINC var CDATA #REQUIRED>
|
||||
<!ELEMENT ILOAD EMPTY>
|
||||
<!ATTLIST ILOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT IMUL EMPTY>
|
||||
<!ELEMENT INEG EMPTY>
|
||||
<!ELEMENT INSTANCEOF EMPTY>
|
||||
<!ATTLIST INSTANCEOF desc CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEINTERFACE EMPTY>
|
||||
<!ATTLIST INVOKEINTERFACE desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEINTERFACE name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEINTERFACE owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKESPECIAL EMPTY>
|
||||
<!ATTLIST INVOKESPECIAL desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESPECIAL name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESPECIAL owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKESTATIC EMPTY>
|
||||
<!ATTLIST INVOKESTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEVIRTUAL EMPTY>
|
||||
<!ATTLIST INVOKEVIRTUAL desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEVIRTUAL name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEVIRTUAL owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEDYNAMIC ( bsmArgs+ )>
|
||||
<!ATTLIST INVOKEDYNAMIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEDYNAMIC name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEDYNAMIC bsm CDATA #REQUIRED>
|
||||
<!ELEMENT bsmArgs EMPTY>
|
||||
<!ATTLIST bsmArgs cst CDATA #REQUIRED>
|
||||
<!ATTLIST bsmArgs desc CDATA #REQUIRED>
|
||||
<!ELEMENT IOR EMPTY>
|
||||
<!ELEMENT IREM EMPTY>
|
||||
<!ELEMENT IRETURN EMPTY>
|
||||
<!ELEMENT ISHL EMPTY>
|
||||
<!ELEMENT ISHR EMPTY>
|
||||
<!ELEMENT ISTORE EMPTY>
|
||||
<!ATTLIST ISTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT ISUB EMPTY>
|
||||
<!ELEMENT IUSHR EMPTY>
|
||||
<!ELEMENT IXOR EMPTY>
|
||||
<!ELEMENT JSR EMPTY>
|
||||
<!ATTLIST JSR label CDATA #REQUIRED>
|
||||
<!ELEMENT L2D EMPTY>
|
||||
<!ELEMENT L2F EMPTY>
|
||||
<!ELEMENT L2I EMPTY>
|
||||
<!ELEMENT LADD EMPTY>
|
||||
<!ELEMENT LALOAD EMPTY>
|
||||
<!ELEMENT LAND EMPTY>
|
||||
<!ELEMENT LASTORE EMPTY>
|
||||
<!ELEMENT LCMP EMPTY>
|
||||
<!ELEMENT LCONST_0 EMPTY>
|
||||
<!ELEMENT LCONST_1 EMPTY>
|
||||
<!ELEMENT LDC EMPTY>
|
||||
<!--
|
||||
All characters out of interval 0x20 to 0x7f (inclusive) must
|
||||
be encoded (\uXXXX) and character '\' must be replaced by "\\"
|
||||
-->
|
||||
<!ATTLIST LDC cst CDATA #REQUIRED>
|
||||
<!ATTLIST LDC desc CDATA #REQUIRED>
|
||||
<!ELEMENT LDIV EMPTY>
|
||||
<!ELEMENT LLOAD EMPTY>
|
||||
<!ATTLIST LLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT LMUL EMPTY>
|
||||
<!ELEMENT LNEG EMPTY>
|
||||
<!ELEMENT LOR EMPTY>
|
||||
<!ELEMENT LREM EMPTY>
|
||||
<!ELEMENT LRETURN EMPTY>
|
||||
<!ELEMENT LSHL EMPTY>
|
||||
<!ELEMENT LSHR EMPTY>
|
||||
<!ELEMENT LSTORE EMPTY>
|
||||
<!ATTLIST LSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT LSUB EMPTY>
|
||||
<!ELEMENT LUSHR EMPTY>
|
||||
<!ELEMENT LXOR EMPTY>
|
||||
<!ELEMENT MONITORENTER EMPTY>
|
||||
<!ELEMENT MONITOREXIT EMPTY>
|
||||
<!ELEMENT MULTIANEWARRAY EMPTY>
|
||||
<!ATTLIST MULTIANEWARRAY desc CDATA #REQUIRED>
|
||||
<!ATTLIST MULTIANEWARRAY dims CDATA #REQUIRED>
|
||||
<!ELEMENT NEW EMPTY>
|
||||
<!ATTLIST NEW desc CDATA #REQUIRED>
|
||||
<!ELEMENT NEWARRAY EMPTY>
|
||||
<!ATTLIST NEWARRAY value CDATA #REQUIRED>
|
||||
<!ELEMENT NOP EMPTY>
|
||||
<!ELEMENT POP EMPTY>
|
||||
<!ELEMENT POP2 EMPTY>
|
||||
<!ELEMENT PUTFIELD EMPTY>
|
||||
<!ATTLIST PUTFIELD desc CDATA #REQUIRED>
|
||||
<!ATTLIST PUTFIELD name CDATA #REQUIRED>
|
||||
<!ATTLIST PUTFIELD owner CDATA #REQUIRED>
|
||||
<!ELEMENT PUTSTATIC EMPTY>
|
||||
<!ATTLIST PUTSTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST PUTSTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST PUTSTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT RET EMPTY>
|
||||
<!ATTLIST RET var CDATA #REQUIRED>
|
||||
<!ELEMENT RETURN EMPTY>
|
||||
<!ELEMENT SALOAD EMPTY>
|
||||
<!ELEMENT SASTORE EMPTY>
|
||||
<!ELEMENT SIPUSH EMPTY>
|
||||
<!ATTLIST SIPUSH value CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT LOOKUPSWITCH ( label+ )>
|
||||
<!ATTLIST LOOKUPSWITCH dflt CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT TABLESWITCH ( label+ )>
|
||||
<!ATTLIST TABLESWITCH dflt CDATA #REQUIRED>
|
||||
<!ATTLIST TABLESWITCH max CDATA #REQUIRED>
|
||||
<!ATTLIST TABLESWITCH min CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT label EMPTY>
|
||||
<!ATTLIST label key CDATA #IMPLIED>
|
||||
<!ATTLIST label name CDATA #REQUIRED>
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
<html>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<body>
|
||||
Provides <a href="http://sax.sourceforge.net/">SAX 2.0</a> adapters for ASM
|
||||
visitors to convert classes to and from XML.
|
||||
These adapters can be chained with other SAX compliant content handlers and
|
||||
filters, eg. XSLT or XQuery engines. This package is bundled as
|
||||
a separate <tt>asm-xml.jar</tt> library and requires <tt>asm.jar</tt>.
|
||||
<p>
|
||||
<tt>ASMContentHandler</tt> and <tt>SAXClassAdapter/SAXCodeAdapter</tt>
|
||||
are using <a href="asm-xml.dtd">asm-xml.dtd</a>.
|
||||
Here is the example of bytecode to bytecode XSLT transformation.
|
||||
|
||||
<pre>
|
||||
SAXTransformerFactory saxtf = ( SAXTransformerFactory) TransformerFactory.newInstance();
|
||||
Templates templates = saxtf.newTemplates( xsltSource);
|
||||
|
||||
TransformerHandler handler = saxtf.newTransformerHandler( templates);
|
||||
handler.setResult( new SAXResult( new ASMContentHandler( outputStream, computeMax)));
|
||||
|
||||
ClassReader cr = new ClassReader( bytecode);
|
||||
cr.accept( new SAXClassAdapter( handler, cr.getVersion(), false), false);
|
||||
</pre>
|
||||
|
||||
See JAXP and SAX documentation for more detils.
|
||||
|
||||
<p>
|
||||
There are few illustrations of the bytecode transformation with XSLT in
|
||||
examples directory. The following XSLT procesors has been tested.
|
||||
|
||||
<blockquote>
|
||||
<table border="1" cellspacing="0" cellpadding="3">
|
||||
<tr>
|
||||
<th>Engine</td>
|
||||
<th>javax.xml.transform.TransformerFactory property</td>
|
||||
</tr>
|
||||
|
||||
<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>
|
||||
|
||||
@since ASM 1.4.3
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user