View Javadoc
1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one or more
3    *  contributor license agreements.  See the NOTICE file distributed with
4    *  this work for additional information regarding copyright ownership.
5    *  The ASF licenses this file to You under the Apache License, Version 2.0
6    *  (the "License"); you may not use this file except in compliance with
7    *  the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  package org.apache.commons.compress.harmony.unpack200.bytecode;
18  
19  import java.io.DataOutputStream;
20  import java.io.IOException;
21  
22  /**
23   * Signature class file attribute
24   */
25  public class SignatureAttribute extends Attribute {
26  
27      private static CPUTF8 attributeName;
28  
29      public static void setAttributeName(final CPUTF8 cpUTF8Value) {
30          attributeName = cpUTF8Value;
31      }
32  
33      private int signatureIndex;
34  
35      private final CPUTF8 signature;
36  
37      public SignatureAttribute(final CPUTF8 value) {
38          super(attributeName);
39          this.signature = value;
40      }
41  
42      /*
43       * (non-Javadoc)
44       *
45       * @see org.apache.commons.compress.harmony.unpack200.bytecode.Attribute#getLength()
46       */
47      @Override
48      protected int getLength() {
49          return 2;
50      }
51  
52      @Override
53      protected ClassFileEntry[] getNestedClassFileEntries() {
54          return new ClassFileEntry[] { getAttributeName(), signature };
55      }
56  
57      @Override
58      protected void resolve(final ClassConstantPool pool) {
59          super.resolve(pool);
60          signature.resolve(pool);
61          signatureIndex = pool.indexOf(signature);
62      }
63  
64      /*
65       * (non-Javadoc)
66       *
67       * @see org.apache.commons.compress.harmony.unpack200.bytecode.ClassFileEntry#toString()
68       */
69      @Override
70      public String toString() {
71          // TODO Auto-generated method stub
72          return "Signature: " + signature;
73      }
74  
75      /*
76       * (non-Javadoc)
77       *
78       * @see org.apache.commons.compress.harmony.unpack200.bytecode.Attribute#writeBody(java.io.DataOutputStream)
79       */
80      @Override
81      protected void writeBody(final DataOutputStream dos) throws IOException {
82          dos.writeShort(signatureIndex);
83      }
84  
85  }