// remove all atttributes that are not essential public void removeAttributes() throws IOException { // Class level attributes if (attribute_info != null) { for (int i = attribute_info.size() - 1; i >= 0; i--) { AttributeEntry ae = (AttributeEntry) attribute_info.elementAt(i); String name = nameIndexToString(ae.getNameIndex()); if (name.equals("SourceFile")) attribute_info.removeElementAt(i); else if (name.equals("InnerClasses")) ; // leave in else System.err.println("WARNING - Unknown Class File attribute " + name); } if (attribute_info.size() == 0) attribute_info = null; } attribute_info = null; // fields for (Enumeration e = getFields(); e.hasMoreElements(); ) { ClassMember member = (ClassMember) e.nextElement(); Attributes attrs = member.attribute_info; if (attrs != null) { for (int i = attrs.size() - 1; i >= 0; i--) { AttributeEntry ae = (AttributeEntry) attrs.elementAt(i); String name = nameIndexToString(ae.getNameIndex()); if (name.equals("ConstantValue")) ; // leave in else if (name.equals("Synthetic")) ; // leave in else System.err.println("WARNING - Unknown Field attribute " + name); } if (attrs.size() == 0) member.attribute_info = null; } } // methods for (Enumeration e = getMethods(); e.hasMoreElements(); ) { ClassMember member = (ClassMember) e.nextElement(); Attributes attrs = member.attribute_info; if (attrs != null) { for (int i = attrs.size() - 1; i >= 0; i--) { AttributeEntry ae = (AttributeEntry) attrs.elementAt(i); String name = nameIndexToString(ae.getNameIndex()); if (name.equals("Code")) processCodeAttribute(member, ae); else if (name.equals("Exceptions")) ; // leave in else if (name.equals("Deprecated")) ; // leave in else if (name.equals("Synthetic")) ; // leave in else System.err.println("WARNING - Unknown method attribute " + name); } if (attrs.size() == 0) member.attribute_info = null; } } }