All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.weaver.PrivilegedAccessMunger Maven / Gradle / Ivy

There is a newer version: 1.9.22.1
Show newest version
/* *******************************************************************
 * 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 Eclipse Public License v1.0 
 * which accompanies this distribution and is available at 
 * http://www.eclipse.org/legal/epl-v10.html 
 *  
 * Contributors: 
 *     PARC     initial implementation 
 * ******************************************************************/


package org.aspectj.weaver;

import java.io.DataOutputStream;
import java.io.IOException;

public class PrivilegedAccessMunger extends ResolvedTypeMunger {
	public PrivilegedAccessMunger(ResolvedMember member) {
		super(PrivilegedAccess, member);
	}
	

	public void write(DataOutputStream s) throws IOException {
		throw new RuntimeException("shouldn't be serialized");
	}

	public ResolvedMember getMember() {
		return getSignature();
	}

	public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedType aspectType) {
		ResolvedMember ret;
		if (getSignature().getKind() == Member.FIELD) {
			ret = AjcMemberMaker.privilegedAccessMethodForFieldGet(aspectType, getSignature());
			if (ResolvedType.matches(ret, member)) return getSignature();
			ret = AjcMemberMaker.privilegedAccessMethodForFieldSet(aspectType, getSignature());
			if (ResolvedType.matches(ret, member)) return getSignature();
		} else {
			//System.err.println("sig: " + getSignature());
			ret = AjcMemberMaker.privilegedAccessMethodForMethod(aspectType, getSignature());
			if (ResolvedType.matches(ret, member)) return getSignature();
		}
		return null;
	}

    public boolean equals(Object other) {
        if (! (other instanceof PrivilegedAccessMunger)) return false;
        PrivilegedAccessMunger o = (PrivilegedAccessMunger) other;
        return kind.equals(o.kind)
        		&& ((o.signature == null) ? (signature == null ) : signature.equals(o.signature))
        		&& ((o.declaredSignature == null) ? (declaredSignature == null ) : declaredSignature.equals(o.declaredSignature))
        		&& ((o.typeVariableAliases == null) ? (typeVariableAliases == null ) : typeVariableAliases.equals(o.typeVariableAliases));
    }
	   
    public int hashCode() {
    	int result = 17;
        result = 37*result + kind.hashCode();
        result = 37*result + ((signature == null) ? 0 : signature.hashCode());
        result = 37*result + ((declaredSignature == null) ? 0 : declaredSignature.hashCode());
        result = 37*result + ((typeVariableAliases == null) ? 0 : typeVariableAliases.hashCode());
        return result;
    }
	
 	public boolean existsToSupportShadowMunging() {
		return true;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy