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 }