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