View Javadoc

1   /*
2    * Copyright 2005 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  
18  package org.apache.jdo.impl.enhancer.classfile;
19  
20  import java.io.*;
21  
22  //@olsen: fix 4467428, added class for synthetic attribute to be added
23  // to generated jdo fields and methods
24  
25  /***
26   * A SyntheticAttribute is a fixed-length attribute in the attributes table
27   * of ClassFile, ClassField, and ClassMethod structures.  A class member
28   * that does not appear in the source code must be marked using a
29   * SyntheticAttribute. 
30   */
31  public class SyntheticAttribute extends ClassAttribute {
32      /* The expected name of this attribute */
33      public static final String expectedAttrName = "Synthetic";
34  
35      /*** 
36       * Construct a constant value attribute
37       */
38      public SyntheticAttribute(ConstUtf8 attrName) {
39          super(attrName);
40          //System.out.println("new SyntheticAttribute()");
41      }
42  
43      /* package local methods *//package-summary/html">class="comment"> package local methods *//package-summary.html">/* package local methods *//package-summary.html">class="comment"> package local methods */
44  
45      static SyntheticAttribute read(ConstUtf8 attrName,
46                                     DataInputStream data,
47                                     ConstantPool pool)
48          throws IOException {
49          return new SyntheticAttribute(attrName);
50      }
51  
52      void write(DataOutputStream out) throws IOException {
53          out.writeShort(attrName().getIndex());
54          final int attributeBytesLength = 0;
55          out.writeInt(attributeBytesLength);
56      }
57  
58      void print(PrintStream out, int indent) {
59          ClassPrint.spaces(out, indent);
60          out.println(expectedAttrName);
61      }
62  }