1. /*
  2. * Copyright 2000-2002,2004 The Apache Software Foundation
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. *
  16. */
  17. package org.apache.tools.ant.taskdefs.optional.depend.constantpool;
  18. import java.io.DataInputStream;
  19. import java.io.IOException;
  20. /**
  21. * A NameAndType CP Info
  22. *
  23. */
  24. public class NameAndTypeCPInfo extends ConstantPoolEntry {
  25. /** Constructor. */
  26. public NameAndTypeCPInfo() {
  27. super(CONSTANT_NAMEANDTYPE, 1);
  28. }
  29. /**
  30. * read a constant pool entry from a class stream.
  31. *
  32. * @param cpStream the DataInputStream which contains the constant pool
  33. * entry to be read.
  34. * @exception IOException if there is a problem reading the entry from
  35. * the stream.
  36. */
  37. public void read(DataInputStream cpStream) throws IOException {
  38. nameIndex = cpStream.readUnsignedShort();
  39. descriptorIndex = cpStream.readUnsignedShort();
  40. }
  41. /**
  42. * Print a readable version of the constant pool entry.
  43. *
  44. * @return the string representation of this constant pool entry.
  45. */
  46. public String toString() {
  47. String value;
  48. if (isResolved()) {
  49. value = "Name = " + name + ", type = " + type;
  50. } else {
  51. value = "Name index = " + nameIndex
  52. + ", descriptor index = " + descriptorIndex;
  53. }
  54. return value;
  55. }
  56. /**
  57. * Resolve this constant pool entry with respect to its dependents in
  58. * the constant pool.
  59. *
  60. * @param constantPool the constant pool of which this entry is a member
  61. * and against which this entry is to be resolved.
  62. */
  63. public void resolve(ConstantPool constantPool) {
  64. name = ((Utf8CPInfo) constantPool.getEntry(nameIndex)).getValue();
  65. type = ((Utf8CPInfo) constantPool.getEntry(descriptorIndex)).getValue();
  66. super.resolve(constantPool);
  67. }
  68. /**
  69. * Get the name component of this entry
  70. *
  71. * @return the name of this name and type entry
  72. */
  73. public String getName() {
  74. return name;
  75. }
  76. /**
  77. * Get the type signature of this entry
  78. *
  79. * @return the type signature of this entry
  80. */
  81. public String getType() {
  82. return type;
  83. }
  84. /** the name component of this entry */
  85. private String name;
  86. /** the type component of this entry */
  87. private String type;
  88. /**
  89. * the index into the constant pool at which the name component's string
  90. * value is stored
  91. */
  92. private int nameIndex;
  93. /**
  94. * the index into the constant pool where the type descriptor string is
  95. * stored.
  96. */
  97. private int descriptorIndex;
  98. }