IntertypeMemberTypeFinder.java
/* *******************************************************************
* Copyright (c) 2010 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:
* Andy Clement - SpringSource
* ******************************************************************/
package org.aspectj.ajdt.internal.compiler.lookup;
import java.util.HashSet;
import java.util.Set;
import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ITypeFinder;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
/**
* The member finder looks after intertype declared inner classes on a type, there is one member finder per type that was hit by an
* new inner type declaration.
*
* @author Andy Clement
* @since 1.6.9
*/
public class IntertypeMemberTypeFinder implements ITypeFinder {
// Target that has these new types
public SourceTypeBinding targetTypeBinding;
// The new types declared onto the target
private Set<ReferenceBinding> intertypeMemberTypes = new HashSet<>();
public void addInterTypeMemberType(ReferenceBinding binding) {
intertypeMemberTypes.add(binding);
// ReferenceBinding[] rbs = targetTypeBinding.memberTypes();
// ReferenceBinding[] newRbs = new ReferenceBinding[rbs.length + 1];
// System.arraycopy(rbs, 0, newRbs, 1, rbs.length);
// newRbs[0] = binding;
// (targetTypeBinding).memberTypes = newRbs;
}
public ReferenceBinding getMemberType(char[] memberTypeName) {
for (ReferenceBinding intertypeMemberType : intertypeMemberTypes) {
if (CharOperation.equals(intertypeMemberType.sourceName, memberTypeName)) {
return intertypeMemberType;
}
}
return null;
}
public ReferenceBinding[] getMemberTypes() {
ReferenceBinding[] array = new ReferenceBinding[intertypeMemberTypes.size()];
return intertypeMemberTypes.toArray(array);
}
}