src/share/classes/com/sun/tools/javap/ClassWriter.java

changeset 88
05684554f040
parent 87
fd1d361ae294
child 283
cd0630109de5
equal deleted inserted replaced
87:fd1d361ae294 88:05684554f040
23 * have any questions. 23 * have any questions.
24 */ 24 */
25 25
26 package com.sun.tools.javap; 26 package com.sun.tools.javap;
27 27
28 import java.net.URI;
28 import java.util.Collection; 29 import java.util.Collection;
29 import java.util.List; 30 import java.util.List;
30 31
31 import com.sun.tools.classfile.AccessFlags; 32 import com.sun.tools.classfile.AccessFlags;
32 import com.sun.tools.classfile.Attribute; 33 import com.sun.tools.classfile.Attribute;
44 import com.sun.tools.classfile.Signature; 45 import com.sun.tools.classfile.Signature;
45 import com.sun.tools.classfile.Signature_attribute; 46 import com.sun.tools.classfile.Signature_attribute;
46 import com.sun.tools.classfile.SourceFile_attribute; 47 import com.sun.tools.classfile.SourceFile_attribute;
47 import com.sun.tools.classfile.Type; 48 import com.sun.tools.classfile.Type;
48 49
50 import java.text.DateFormat;
51 import java.util.Date;
49 import static com.sun.tools.classfile.AccessFlags.*; 52 import static com.sun.tools.classfile.AccessFlags.*;
50 53
51 /* 54 /*
52 * The main javap class to write the contents of a class file as text. 55 * The main javap class to write the contents of a class file as text.
53 * 56 *
71 attrWriter = AttributeWriter.instance(context); 74 attrWriter = AttributeWriter.instance(context);
72 codeWriter = CodeWriter.instance(context); 75 codeWriter = CodeWriter.instance(context);
73 constantWriter = ConstantWriter.instance(context); 76 constantWriter = ConstantWriter.instance(context);
74 } 77 }
75 78
79 void setDigest(String name, byte[] digest) {
80 this.digestName = name;
81 this.digest = digest;
82 }
83
84 void setFile(URI uri) {
85 this.uri = uri;
86 }
87
88 void setFileSize(int size) {
89 this.size = size;
90 }
91
92 void setLastModified(long lastModified) {
93 this.lastModified = lastModified;
94 }
95
76 ClassFile getClassFile() { 96 ClassFile getClassFile() {
77 return classFile; 97 return classFile;
78 } 98 }
79 99
80 Method getMethod() { 100 Method getMethod() {
82 } 102 }
83 103
84 public void write(ClassFile cf) { 104 public void write(ClassFile cf) {
85 classFile = cf; 105 classFile = cf;
86 constant_pool = classFile.constant_pool; 106 constant_pool = classFile.constant_pool;
107
108 if ((options.sysInfo || options.verbose) && !options.compat) {
109 if (uri != null) {
110 if (uri.getScheme().equals("file"))
111 println("Classfile " + uri.getPath());
112 else
113 println("Classfile " + uri);
114 }
115 if (lastModified != -1) {
116 Date lm = new Date(lastModified);
117 DateFormat df = DateFormat.getDateInstance();
118 if (size > 0) {
119 println("Last modified " + df.format(lm) + "; size " + size + " bytes");
120 } else {
121 println("Last modified " + df.format(lm));
122 }
123 } else if (size > 0) {
124 println("Size " + size + " bytes");
125 }
126 if (digestName != null && digest != null) {
127 StringBuilder sb = new StringBuilder();
128 for (byte b: digest)
129 sb.append(String.format("%02x", b));
130 println(digestName + " checksum " + sb);
131 }
132 }
87 133
88 Attribute sfa = cf.getAttribute(Attribute.SourceFile); 134 Attribute sfa = cf.getAttribute(Attribute.SourceFile);
89 if (sfa instanceof SourceFile_attribute) { 135 if (sfa instanceof SourceFile_attribute) {
90 println("Compiled from \"" + getSourceFile((SourceFile_attribute) sfa) + "\""); 136 println("Compiled from \"" + getSourceFile((SourceFile_attribute) sfa) + "\"");
91 } 137 }
568 private Options options; 614 private Options options;
569 private AttributeWriter attrWriter; 615 private AttributeWriter attrWriter;
570 private CodeWriter codeWriter; 616 private CodeWriter codeWriter;
571 private ConstantWriter constantWriter; 617 private ConstantWriter constantWriter;
572 private ClassFile classFile; 618 private ClassFile classFile;
619 private URI uri;
620 private long lastModified;
621 private String digestName;
622 private byte[] digest;
623 private int size;
573 private ConstantPool constant_pool; 624 private ConstantPool constant_pool;
574 private Method method; 625 private Method method;
575 private static final String NEWLINE = System.getProperty("line.separator", "\n"); 626 private static final String NEWLINE = System.getProperty("line.separator", "\n");
576 } 627 }

mercurial