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

org.aspectj.ajdt.internal.compiler.lookup.AnonymousClassPublisher.aj Maven / Gradle / Ivy

/* *******************************************************************
 * Copyright (c) 2005 Contributors.
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *  
 * Contributors: 
 *   Adrian Colyer			Initial implementation
 * ******************************************************************/
package org.aspectj.ajdt.internal.compiler.lookup;

import org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding;

/**
 * Anonymous classes are not discovered until the block in which they are
 * declared is resolved. That's after we normally add types into the weaver's
 * type map, so we need to register anonymous types as we discover them.
 */
public aspect AnonymousClassPublisher {

	private AnonymousClassCreationListener listener;  // philosophically there should be a list of
	                                                   // these, but pragmatically we know there is
	                                                   // only one.
	
	public void setAnonymousClassCreationListener(AnonymousClassCreationListener aListener) {
		this.listener = aListener;
	}
	
	pointcut establishingSignatureOfLocalType(LocalTypeBinding aBinding) : 
		execution(* LocalTypeBinding.setConstantPoolName(..)) && this(aBinding);
	
	after(LocalTypeBinding aBinding) returning : 
		establishingSignatureOfLocalType(aBinding) {
		if (listener != null) listener.anonymousTypeBindingCreated(aBinding);		
	}
	
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy