12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /* *******************************************************************
- * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Common Public License v1.0
- * which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * PARC initial implementation
- * ******************************************************************/
-
-
- package org.aspectj.weaver.bcel;
-
- import java.util.Iterator;
- import java.util.List;
-
- import org.aspectj.apache.bcel.classfile.Attribute;
- import org.aspectj.apache.bcel.classfile.Field;
- import org.aspectj.apache.bcel.classfile.Synthetic;
- import org.aspectj.weaver.AjAttribute;
- import org.aspectj.weaver.BCException;
- import org.aspectj.weaver.ResolvedMember;
- import org.aspectj.weaver.TypeX;
- import org.aspectj.weaver.World;
-
- final class BcelField extends ResolvedMember {
-
- private Field field;
- private boolean isAjSynthetic;
- private boolean isSynthetic = false;
-
- BcelField(BcelObjectType declaringType, Field field) {
- super(
- FIELD,
- declaringType.getResolvedTypeX(),
- field.getAccessFlags(),
- field.getName(),
- field.getSignature());
- this.field = field;
- unpackAttributes(declaringType.getResolvedTypeX().getWorld());
- checkedExceptions = TypeX.NONE;
- }
-
- // ----
-
- private void unpackAttributes(World world) {
- Attribute[] attrs = field.getAttributes();
- List as = BcelAttributes.readAjAttributes(attrs, getSourceContext(world));
- for (Iterator iter = as.iterator(); iter.hasNext();) {
- AjAttribute a = (AjAttribute) iter.next();
- if (a instanceof AjAttribute.AjSynthetic) {
- isAjSynthetic = true;
- } else {
- throw new BCException("weird field attribute " + a);
- }
- }
- isAjSynthetic = false;
-
-
- for (int i = attrs.length - 1; i >= 0; i--) {
- if (attrs[i] instanceof Synthetic) isSynthetic = true;
- }
- }
-
-
-
- public boolean isAjSynthetic() {
- return isAjSynthetic; // || getName().startsWith(NameMangler.PREFIX);
- }
-
- public boolean isSynthetic() {
- return isSynthetic;
- }
- }
|