KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > speedo > generation > enhancer > PersistentFieldRemover


1 /**
2  * Copyright (C) 2001-2004 France Telecom R&D
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  */

18 package org.objectweb.speedo.generation.enhancer;
19
20 import org.objectweb.asm.Attribute;
21 import org.objectweb.asm.ClassVisitor;
22 import org.objectweb.asm.Constants;
23 import org.objectweb.speedo.metadata.SpeedoClass;
24 import org.objectweb.util.monolog.api.Logger;
25
26 /**
27  * This visistor removes the persistent fields of a persistent class.
28  *
29  * @author S.Chassande-Barrioz
30  */

31 public class PersistentFieldRemover extends LoggedClassAdapter {
32
33     SpeedoClass clazz;
34
35     public PersistentFieldRemover(final ClassVisitor classVisitor,
36                                   final SpeedoClass jdoClass) {
37         super(classVisitor);
38         this.clazz = jdoClass;
39     }
40
41     public PersistentFieldRemover(final ClassVisitor classVisitor,
42                                   final SpeedoClass jdoClass,
43                                   final Logger logger) {
44         super(classVisitor, logger);
45         this.clazz = jdoClass;
46     }
47
48     public void visitField(final int access,
49                            final String JavaDoc name,
50                            final String JavaDoc desc,
51                            final Object JavaDoc value,
52                            final Attribute attrs) {
53         if (((access & Constants.ACC_STATIC) != 0)
54                 || clazz.jdoField.get(name)==null) {
55             super.visitField(access, name, desc, value, attrs);
56         }
57     }
58 }
59
Popular Tags