diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java deleted file mode 100644 index 20e9fc51..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/jlink/ClassNameReader.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tools.ant.taskdefs.optional.jlink; - -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * Reads just enough of a class file to determine the class' full name. - * - * <p>Extremely minimal constant pool implementation, mainly to support extracting - * strings from a class file. - */ -class ConstantPool { - // CheckStyle:VisibilityModifier OFF - bc - static final - byte UTF8 = 1, UNUSED = 2, INTEGER = 3, FLOAT = 4, LONG = 5, DOUBLE = 6, - CLASS = 7, STRING = 8, FIELDREF = 9, METHODREF = 10, - INTERFACEMETHODREF = 11, NAMEANDTYPE = 12; - - byte[] types; - - Object[] values; - // CheckStyle:VisibilityModifier ON - - /** - * Create a constant pool. - * @param data the data input containing the class. - * @throws IOException if there is an error. - */ - ConstantPool(DataInput data) throws IOException { - super(); - - int count = data.readUnsignedShort(); - types = new byte [ count ]; - values = new Object [ count ]; - // read in all constant pool entries. - for (int i = 1; i < count; i++) { - byte type = data.readByte(); - types[i] = type; - switch (type) { - case UTF8 : - values[i] = data.readUTF(); - break; - - case UNUSED : - break; - - case INTEGER : - values[i] = new Integer(data.readInt()); - break; - - case FLOAT : - values[i] = new Float(data.readFloat()); - break; - - case LONG : - values[i] = new Long(data.readLong()); - ++i; - break; - - case DOUBLE : - values[i] = new Double(data.readDouble()); - ++i; - break; - - case CLASS : - case STRING : - values[i] = new Integer(data.readUnsignedShort()); - break; - - case FIELDREF : - case METHODREF : - case INTERFACEMETHODREF : - case NAMEANDTYPE : - values[i] = new Integer(data.readInt()); - break; - default: - // Do nothing - } - } - } -} - -/** - * Provides a quick and dirty way to determine the true name of a class - * given just an InputStream. Reads in just enough to perform this - * minimal task only. - */ -public class ClassNameReader extends Object { - private static final int CLASS_MAGIC_NUMBER = 0xCAFEBABE; - - /** - * Get the class name of a class in an input stream. - * - * @param input an <code>InputStream</code> value - * @return the name of the class - * @exception IOException if an error occurs - */ - public static String getClassName(InputStream input) throws IOException { - DataInputStream data = new DataInputStream(input); - // verify this is a valid class file. - int cookie = data.readInt(); - if (cookie != CLASS_MAGIC_NUMBER) { - return null; - } - /* int version = */ data.readInt(); - // read the constant pool. - ConstantPool constants = new ConstantPool(data); - Object[] values = constants.values; - // read access flags and class index. - /* int accessFlags = */ data.readUnsignedShort(); - int classIndex = data.readUnsignedShort(); - Integer stringIndex = (Integer) values[classIndex]; - String className = (String) values[stringIndex.intValue()]; - return className; - } - - -} - - |