19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.javap;
27
28 import java.lang.reflect.Modifier;
29 import java.nio.charset.StandardCharsets;
30 import java.util.List;
31 import java.util.Locale;
32 import java.lang.classfile.*;
33 import java.lang.reflect.AccessFlag;
34 import java.lang.classfile.constantpool.*;
35 import java.lang.classfile.attribute.*;
36 import static java.lang.classfile.ClassFile.*;
37 import static java.lang.classfile.attribute.StackMapFrameInfo.*;
38
39 /*
40 * A writer for writing Attributes as text.
41 *
42 * <p><b>This is NOT part of any supported API.
43 * If you write code that depends on this, you do so at your own risk.
44 * This code and its internal interfaces are subject to change or
45 * deletion without notice.</b>
46 */
47 public class AttributeWriter extends BasicWriter {
48
49 public static AttributeWriter instance(Context context) {
50 AttributeWriter instance = context.get(AttributeWriter.class);
51 if (instance == null)
52 instance = new AttributeWriter(context);
53 return instance;
54 }
55
56 protected AttributeWriter(Context context) {
57 super(context);
58 context.put(AttributeWriter.class, this);
507 case RuntimeVisibleTypeAnnotationsAttribute attr ->
508 printTypeAnnotations("RuntimeVisibleTypeAnnotations:",
509 attr.annotations(), lr);
510 case RuntimeInvisibleTypeAnnotationsAttribute attr ->
511 printTypeAnnotations("RuntimeInvisibleTypeAnnotations:",
512 attr.annotations(), lr);
513 case RuntimeVisibleParameterAnnotationsAttribute attr ->
514 printParameterAnnotations("RuntimeVisibleParameterAnnotations:",
515 attr.parameterAnnotations());
516 case RuntimeInvisibleParameterAnnotationsAttribute attr ->
517 printParameterAnnotations("RuntimeInvisibleParameterAnnotations:",
518 attr.parameterAnnotations());
519 case PermittedSubclassesAttribute attr -> {
520 println("PermittedSubclasses:");
521 indent(+1);
522 for (var sc : attr.permittedSubclasses()) {
523 println(constantWriter.stringValue(sc));
524 }
525 indent(-1);
526 }
527 case SignatureAttribute attr -> {
528 print("Signature: #" + attr.signature().index());
529 tab();
530 println("// " + attr.signature().stringValue());
531 }
532 case SourceDebugExtensionAttribute attr -> {
533 println("SourceDebugExtension:");
534 indent(+1);
535 for (String s: new String(attr.contents(), StandardCharsets.UTF_8)
536 .split("[\r\n]+")) {
537 println(s);
538 }
539 indent(-1);
540 }
541 case SourceFileAttribute attr ->
542 println("SourceFile: \"" + attr.sourceFile().stringValue() + "\"");
543 case SourceIDAttribute attr ->
544 constantWriter.write(attr.sourceId().index());
545 case StackMapTableAttribute attr -> {
546 var entries = attr.entries();
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.javap;
27
28 import java.lang.reflect.Modifier;
29 import java.nio.charset.StandardCharsets;
30 import java.util.List;
31 import java.util.Locale;
32 import java.lang.classfile.*;
33 import java.lang.reflect.AccessFlag;
34 import java.lang.classfile.constantpool.*;
35 import java.lang.classfile.attribute.*;
36 import static java.lang.classfile.ClassFile.*;
37 import static java.lang.classfile.attribute.StackMapFrameInfo.*;
38
39 import com.sun.tools.javac.util.Assert;
40 import com.sun.tools.javac.util.StringUtils;
41
42 /*
43 * A writer for writing Attributes as text.
44 *
45 * <p><b>This is NOT part of any supported API.
46 * If you write code that depends on this, you do so at your own risk.
47 * This code and its internal interfaces are subject to change or
48 * deletion without notice.</b>
49 */
50 public class AttributeWriter extends BasicWriter {
51
52 public static AttributeWriter instance(Context context) {
53 AttributeWriter instance = context.get(AttributeWriter.class);
54 if (instance == null)
55 instance = new AttributeWriter(context);
56 return instance;
57 }
58
59 protected AttributeWriter(Context context) {
60 super(context);
61 context.put(AttributeWriter.class, this);
510 case RuntimeVisibleTypeAnnotationsAttribute attr ->
511 printTypeAnnotations("RuntimeVisibleTypeAnnotations:",
512 attr.annotations(), lr);
513 case RuntimeInvisibleTypeAnnotationsAttribute attr ->
514 printTypeAnnotations("RuntimeInvisibleTypeAnnotations:",
515 attr.annotations(), lr);
516 case RuntimeVisibleParameterAnnotationsAttribute attr ->
517 printParameterAnnotations("RuntimeVisibleParameterAnnotations:",
518 attr.parameterAnnotations());
519 case RuntimeInvisibleParameterAnnotationsAttribute attr ->
520 printParameterAnnotations("RuntimeInvisibleParameterAnnotations:",
521 attr.parameterAnnotations());
522 case PermittedSubclassesAttribute attr -> {
523 println("PermittedSubclasses:");
524 indent(+1);
525 for (var sc : attr.permittedSubclasses()) {
526 println(constantWriter.stringValue(sc));
527 }
528 indent(-1);
529 }
530 case LoadableDescriptorsAttribute attr -> {
531 println("LoadableDescriptors:");
532 indent(+1);
533 for (var sc : attr.loadableDescriptors()) {
534 println(constantWriter.stringValue(sc));
535 }
536 indent(-1);
537 }
538 case SignatureAttribute attr -> {
539 print("Signature: #" + attr.signature().index());
540 tab();
541 println("// " + attr.signature().stringValue());
542 }
543 case SourceDebugExtensionAttribute attr -> {
544 println("SourceDebugExtension:");
545 indent(+1);
546 for (String s: new String(attr.contents(), StandardCharsets.UTF_8)
547 .split("[\r\n]+")) {
548 println(s);
549 }
550 indent(-1);
551 }
552 case SourceFileAttribute attr ->
553 println("SourceFile: \"" + attr.sourceFile().stringValue() + "\"");
554 case SourceIDAttribute attr ->
555 constantWriter.write(attr.sourceId().index());
556 case StackMapTableAttribute attr -> {
557 var entries = attr.entries();
|