Example usage for org.aspectj.weaver ResolvedTypeMunger Field

List of usage examples for org.aspectj.weaver ResolvedTypeMunger Field

Introduction

In this page you can find the example usage for org.aspectj.weaver ResolvedTypeMunger Field.

Prototype

Kind Field

To view the source code for org.aspectj.weaver ResolvedTypeMunger Field.

Click Source Link

Usage

From source file:org.eclipse.ajdt.core.model.AJWorldFacade.java

License:Open Source License

public ITDInfo findITDInfoFromDeclaringType(char[] declaringTypeSignature, char[] name) {
    if (world == null || declaringTypeSignature == null) {
        return null;
    }/*from w  w w . jav a  2s.  c o m*/
    List<ConcreteTypeMunger> itds;
    String nameStr = new String(name);
    ResolvedType type = null;
    try {
        String sig = createAJSignature(declaringTypeSignature);
        type = world.getCoreType(UnresolvedType.forSignature(sig));
    } catch (Exception e) {
        // can't do much here
        return null;
    }
    if (type == null || type.isMissing() || type.crosscuttingMembers == null) {
        return null;
    }
    itds = type.crosscuttingMembers.getTypeMungers();

    if (itds == null) {
        return null;
    }

    for (ConcreteTypeMunger concreteTypeMunger : itds) {
        ResolvedTypeMunger munger = concreteTypeMunger.getMunger();
        if (munger == null) {
            continue;
        }
        if (munger.getKind() == ResolvedTypeMunger.Field) {
            if (munger.getSignature().getName().equals(nameStr)) {
                return ITDInfo.create(concreteTypeMunger, true);
            }
        }

        if (munger.getKind() == ResolvedTypeMunger.Method) {
            // also need to compare parameters, but parameters
            // are expensive to calculate
            if (nameStr.endsWith("." + munger.getSignature().getName())) {
                return ITDInfo.create(concreteTypeMunger, true);
            }
        }
    }
    return null;
}

From source file:org.eclipse.ajdt.core.model.AJWorldFacade.java

License:Open Source License

public ITDInfo findITDInfoFromTargetType(char[] targetTypeSignature, char[] name) {
    if (world == null || targetTypeSignature == null) {
        return null;
    }/*from   ww  w  . j a  v a  2 s  .  c  o m*/
    List<ConcreteTypeMunger> itds;
    String nameStr = new String(name);
    if (cachedMungers != null && cachedMungers.containsKey(targetTypeSignature)) {
        itds = (List<ConcreteTypeMunger>) cachedMungers.get(targetTypeSignature);
        if (itds == null) {
            return null;
        }
    } else {
        ResolvedType type = null;
        try {
            String sig = createAJSignature(targetTypeSignature);
            type = world.getCoreType(UnresolvedType.forSignature(sig));
        } catch (Exception e) {
            // don't cache
            return null;
        }
        if (type == null || type.isMissing()) {
            cacheMunger(targetTypeSignature, null);
            return null;
        }
        itds = type.getInterTypeMungersIncludingSupers();
        cacheMunger(targetTypeSignature, itds);
    }

    for (ConcreteTypeMunger concreteTypeMunger : itds) {
        ResolvedTypeMunger munger = concreteTypeMunger.getMunger();
        if (munger == null) {
            continue;
        }
        if (munger.getKind() == ResolvedTypeMunger.Field) {
            if (munger.getSignature().getName().equals(nameStr)) {
                return ITDInfo.create(concreteTypeMunger, false);
            }
        }

        if (munger.getKind() == ResolvedTypeMunger.Method) {
            // also need to compare parameters, but parameters
            // are expensive to calculate
            if (munger.getSignature().getName().equals(nameStr)) {
                return ITDInfo.create(concreteTypeMunger, false);
            }
        }
    }
    return null;
}